¿Que sistema sistema operativo estas usando?
¿Algún derivado de UNIX?
Pregunto esto porque las funciones que usas son muy parecidas a las del entandar POSIX.
Si estas usando algún UNIX la cosa es mas o menos así.
Los procesos se identifica mediante un tipo llamado
pid_t
Este tipo esta definido en la librería
sys/types.h
Para crear un proceso hijo usamos la llamada
fork() de la siguiente manera.
pid_t hijo;
hijo = fork();
Esa llamada crea una copia del proceso. El proceso padre continua en la siguiente linea al fork, y el hijo TAMBIÉN.
Bien, para poder averiguar cual es el pid (identificador) de un proceso, lo podemos hacer con la función
getpid() de la siguiente manera:
pid_t padre = getpid();
Entonces podrías armar la estructura del programa de la siguiente manera
Código:
#include<sys/types.h>
#include<stdio.h>
int main() {
pid_t padre;
pid_t hijo;
padre = getpid(); // acá guardamos el pid del padre
hijo = fork(); // bifurcamos y guardamos el pid del hijo
if(getpid()==padre) {
// acá deberías dormir al hijo
}
else {
while(1) {
printf("Hola, soy el hijo \n");
}
}
}
El tema de dormir procesos es bastante mas complejo, te dejo un link para que le veas en forma detallada
http://atc1.aut.uah.es/~arqui/Trps/POSIX_de_tiempo_real.ppt