Так что это простая программа для создания двух процессов: родительского и дочернего. Итак, я сделал приветствие внутри родителя и имя внутри дочернего процесса. По какой-то причине мой дочерний процесс не печатает, несмотря на то, что я вызвал wait() внутри родителя. Что мне делать?C программный дочерний процесс не выполняется
ЗАДАЧА ВЫВОД: «Привет Сэм» OUTPUT I "M ПОЛУЧЕНИЕ:„ Привет“
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
char *greeting = "Hello";
char *name;
pid_t pid;
pid = fork();
if(pid == 0)
{
name = "Sam";
exit(0);
}
else if(pid == -1)
printf("Fail\n");
else{
wait(0);
printf("%s %s", greeting, name);
}
}
Приостановка родительского процесса во время выполнения дочернего процесса будет лучше, потому что в случае отсутствия его приостановки каким-либо образом, даже если адресное пространство было разделено, не было бы гарантии, что дочерний процесс будет напишите в 'name', прежде чем родительский процесс попытается выполнить' printf() 'it. 'vfork()' удаляется в POSIX.1-2008, кстати, и устарел с 2001 года. –
Исправить. Когда я сказал: «Я предполагаю, что все в порядке», я думаю, я должен был сказать «я предполагаю, что это то, что вы пытаетесь», –