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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define col 3
#define fil 3
pid_t pidHA, pidHB, pidP,pidPHA,pidPHB;
int main()
{
int A[fil][col],B[fil][col],c[fil][col];
int hijoA, hijoB;
int i,j;
srand((unsigned)time(NULL));
pidP=getpid();
printf("PID del proceso padre es: %d\n",pidP);
hijoA=fork();
if(hijoA==-1)
printf("Error al crear proceso");
if(hijoA==0) //hijo
{
pidHA=getpid();
pidPHA=getppid();
printf("PID del proceso HijoA es: %d, PID proceso padre es: %d \n",pidHA,pidPHA);
for(i=0;i<fil;i++)
for(j=0;j<col;j++)
A[i][j]=(rand()%256)+1;
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
printf("%d\t",A[i][j]);
printf("\n\n");
}
}
else
{
hijoB=fork();
if(hijoB==0) //hijo
{
pidHB=getpid();
pidPHB=getppid();
printf("PID del proceso HijoB es: %d, PID proceso padre es: %d \n",pidHB,pidPHB);
for(i=0;i<fil;i++)
for(j=0;j<col;j++)
B[i][j]=(rand()%10)+1;
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
printf("%d\t",A[i][j]);
printf("\n\n");
}
}
}
wait(0);
}
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.
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
Cita de: 7emiliosk8 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
https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)#C11 (https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)#C11)
es la ultima versión de C, la del 2011
tambien existe la libreria pthread.
para utilizarla basta con incluir la libreria pthread.h
aca un peque;o ejemplo:
// 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