используя exec () системный вызов в Linux - PullRequest
0 голосов
/ 13 октября 2019

Я прошел уроки о том, как использовать системный вызов 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);
}



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...