Я прошел уроки о том, как использовать системный вызов exec
, но я до сих пор не могу его успешно вызвать. Я использую fork()
для порождения 2 дочерних процессов и exec()
для запуска новой программы в каждом дочернем процессе. Однако вызов возвращает -1, что указывает на ошибку. Я прочитал со страниц руководства, что первым аргументом должно быть название программы, которую я пытаюсь запустить. Родительский процесс находится в той же папке, что и дочерние.
Может ли кто-нибудь вести меня в правильном направлении? Я использую Ubuntu 18.04 LTS, которую я загрузил с USB.
int main()
{
int qid=msgget(IPC_PRIVATE, IPC_EXCL|IPC_CREAT|0600);
cout<<"\nThe message queue was created succesfully!\n";
cout<<"\nIts queue ID is "<<qid<<"\n";
pid_t cpid;
cpid=fork();
if(cpid==0)
{
cout<<execl("/receiver","receiver",(char *)0);
cout<<"The receiver child has process ID: "<<getpid()<<"\n";
exit(0);
}
cpid=fork();
if(cpid==0)
{
cout<<execl("/sender","sender",(char *)0);
cout<<"The sender child has process ID: "<<getpid()<<"\n";
exit(0);
}
while(wait(NULL) != -1);
}