elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Multi procesos en C ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Multi procesos en C ?  (Leído 2,366 veces)
7emiliosk8

Desconectado Desconectado

Mensajes: 73


Ver Perfil
Multi procesos en C ?
« en: 20 Febrero 2017, 00:48 am »

Hola, estuve viendo un codigo y tiene muchas funciones que no conozco, getpid getppid fork y otras, pero no encuentro mucha informacion en google respecto a ellas, este tema se llama MULTIPROCESOS ? si es asi hay algun libro o algo donde salga esto para leer y entender mejor el codigo, gracias de antemano

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <unistd.h>
  5.  
  6. #define col 3
  7. #define fil 3
  8.  
  9. pid_t pidHA, pidHB, pidP,pidPHA,pidPHB;
  10.  
  11. int  main()
  12. {
  13. int A[fil][col],B[fil][col],c[fil][col];
  14. int hijoA, hijoB;
  15. int i,j;
  16.  
  17. srand((unsigned)time(NULL));
  18.  
  19. pidP=getpid();
  20. printf("PID del proceso padre  es: %d\n",pidP);
  21.  
  22. hijoA=fork();
  23.  
  24. if(hijoA==-1)
  25. printf("Error al crear proceso");
  26. if(hijoA==0) //hijo
  27. {
  28. pidHA=getpid();
  29. pidPHA=getppid();
  30. printf("PID del proceso HijoA  es: %d, PID proceso padre es: %d \n",pidHA,pidPHA);
  31.  
  32. for(i=0;i<fil;i++)
  33. for(j=0;j<col;j++)
  34. A[i][j]=(rand()%256)+1;
  35.  
  36. for(i=0;i<fil;i++)
  37. {
  38. for(j=0;j<col;j++)
  39. printf("%d\t",A[i][j]);
  40. printf("\n\n");
  41. }
  42. }
  43. else
  44. {
  45. hijoB=fork();
  46. if(hijoB==0) //hijo
  47. {
  48. pidHB=getpid();
  49. pidPHB=getppid();
  50. printf("PID del proceso HijoB  es: %d, PID proceso padre es: %d \n",pidHB,pidPHB);
  51.  
  52. for(i=0;i<fil;i++)
  53. for(j=0;j<col;j++)
  54. B[i][j]=(rand()%10)+1;
  55.  
  56. for(i=0;i<fil;i++)
  57. {
  58. for(j=0;j<col;j++)
  59. printf("%d\t",A[i][j]);
  60. printf("\n\n");
  61. }
  62.  
  63. }
  64. }
  65. wait(0);
  66.  
  67.  
  68.  
  69.  
  70. }


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Multi procesos en C ?
« Respuesta #1 en: 21 Febrero 2017, 11:03 am »

Desde C11 está la librería threads. Sirve para programación multihilos nativa en C.

Para multiproceso tienes fork y la familia exec. En inglés hay bastante información.


« Última modificación: 21 Febrero 2017, 11:05 am por MAFUS » En línea

7emiliosk8

Desconectado Desconectado

Mensajes: 73


Ver Perfil
Re: Multi procesos en C ?
« Respuesta #2 en: 22 Febrero 2017, 21:27 pm »

Gracias, 1 consulta, que significa C11 ? y hay alguna pagina que conozcas en ingles por ultimo donde salga esto ? lo idea seria un libro pero si no hay  no importa :l
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Multi procesos en C ?
« Respuesta #3 en: 23 Febrero 2017, 00:46 am »

Gracias, 1 consulta, que significa C11 ? y hay alguna pagina que conozcas en ingles por ultimo donde salga esto ? lo idea seria un libro pero si no hay  no importa :l


https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)#C11

es la ultima versión de C, la del 2011
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
integeroverflow

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Multi procesos en C ?
« Respuesta #4 en: 24 Febrero 2017, 07:26 am »

tambien existe la libreria pthread.

para utilizarla basta con incluir la libreria pthread.h

aca un peque;o ejemplo:

Código:
// gcc hilos.c -pthread
#include <stdio.h>
#include <pthread.h>

pthread_t hilos[5]; // manipuladores de los hilos

void *hilo(void *parametros)
{
     printf("Soy el hilo %d\n", *(int*)parametros);
pthread_exit(NULL); // matamos el hilo
}

int main(void)
{
for(int i=0; i<5; i++)
{
pthread_create(&hilos[i], NULL, hilo, (void*)&i);
// creamos el hilo, el primer parametro es un puntero al manipulador, el tercero es la funcion a la que va a llamar y el ultimo son los parametros. si necesitas multiples parametros podes hacer una estructura y meter todos los param ahi, y castearla a void para recuperarla en el thread.
}
    printf("Listo\n");
}


mas info:

man pthread_create
man pthread_exit


EDIT: me acabo de dar cuenta que hablan de procesos y no de hilos, perdon jaja
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Listar procesos y realizar cosas con los procesos
Programación Visual Basic
sebas369 2 3,152 Último mensaje 14 Julio 2006, 16:08 pm
por sebas369
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines