J'essaie d'apprendre la programmation UNIX et suis tombé sur une question concernant fork (). Je comprends que fork () crée un processus identique au processus en cours d'exécution, mais où commence-t-il? Par exemple, si j'ai du code
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
La sortie est:
Il s'agit très certainement du processus parent
Quel processus a imprimé cela?
Quel processus l'a imprimé?
Je pensais que cela fork()
créait un même processus, donc j'ai d'abord pensé que dans ce programme, l' fork()
appel serait récursivement appelé pour toujours. Je suppose que ce nouveau processus créé à partir de fork()
commence après l' fork()
appel?
Si j'ajoute le code suivant, pour faire la différence entre un processus parent et enfant,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
après l'appel fork (), où le processus enfant commence-t-il son exécution?
man fork
est sûr de répondre à votre question, btw