J'essaie de comprendre le consept du processus. J'ai donc écrit un programme comme celui-ci:pourquoi parent.getpid() et child.getppid() différent
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid == 0)
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
else
printf("This is the parent process. My pid is %d and my child's id is %d.\n", getpid(), pid);
}
Je pensais ce programme imprimerait quelque chose comme
This is the parent process. My pid is 2283 and my child's id is 2284.
This is the child process. My pid is 2284 and my parent's id is 2283.
Mais au contraire, elle imprime cette
This is the parent process. My pid is 2283 and my child's id is 2284.
This is the child process. My pid is 2284 and my parent's id is 1086.
A la fin de la deuxième ligne , le pid parent de l'enfant est différent du pid du processus parent. Pourquoi cela se produit-il? Y a-t-il quelque chose qui me manque?
Merci à l'avance
J'ai testé votre échantillon et ne peux pas reproduire le comportement que vous décrivez. Sur mon système cela fonctionne comme vous (et moi) attendez. J'ai Windows 10, cygwin, gcc 5.4.0. Étrange ... – Scheff
Je l'ai testé aussi sur [coliru] (http://coliru.stacked-crooked.com/a/55a061ea3b2c1c6a). Le même résultat - cela fonctionne comme prévu. – Scheff
Je lance ce programme sur Oracle VM Ubuntu. Cela arrive-t-il à cause de cela? –