Проблема с домашней работой, над которой я работаю, довольно проста, но я новичок в C, так что я могу застрять в синтаксических ошибках.Я пытаюсь вызвать программу из другой программы, назначить новый процесс, используя fork()
, а затем подождать, пока ребенок закончит, используя waitpid()
.Я пытаюсь А. заставить waitpid()
работать, а Б. получить простое тестовое сообщение, которое будет показано после того, как ребенок закончил.
. / Countprimes проходит через ./countmaster../countprimes работает отлично, просто выводит на экран все простые числа от x до y../countmaster звонит ./countprimes.
#include <unistd.h>
#include <stdio.h>
int main(int argc, char* argv[]){
int processid = fork();
int status;
char* arguments[4];
arguments[0]="./countprimes";
arguments[1]="10";
arguments[2]="30";
arguments[3]=NULL;
if(processid == 0)
execvp("./countprimes",arguments);
else
waitpid(processid, &status, 0);
printf("test1");
}
Я бы ожидал увидеть: число простых чисел, начинающееся с 10 и заканчивающееся 29 числом простых чисел, с 10 по 29 равно 6 test1
, что я вижу вместо этого - сообщение test1.Я также получаю предупреждение gcc: неявное объявление функции 'waitpid';Вы имели в виду «getpid»?