Для того, чтобы объяснить вопрос, который я задаю давайте рассмотрим этот код,Когда дочерний процесс создается с вилкой, родитель ID не так же, как и родительский ID
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
pid_t child, parent;
parent = getpid();
printf("Main parent pid: %d\n",parent);
if((child = fork()) < 0) {
printf("Error\n");
} else if(child == 0) {
printf("A Child process is created, pid: %d, ppid: %d \n",
getpid(), getppid());
} else if(child > 0) {
printf("Parent says: Child pid: %d, getpid: %d, getppid: %d\n",
child, getpid(), getppid());
}
return 0;
}
Когда я выполняю это код на терминале я получаю такой вывод данных
Main pid: 711
Parent says: Child pid: 712, getpid: 711, getppid: 598
A Child process is created, pid: 712, ppid: 1
насколько я понимаю, когда я создаю новый процесс порождения из уже созданного процесса, родитель этого нового процесса должен процесс, который я раздвоенный . Как вы можете видеть на выходе, родительский идентификатор процесса для ребенка равен 1, то есть init процесс, так почему же так? Я понимаю, что неправильно, или есть какие-то другие вещи, которые я не вижу?
Примечание: Я работаю над Mac OSX.
Это это ужасный макет. Если вы программируете в Pico, используйте его. Если вы программируете на C, используйте ортодоксальный макет C - не это. –