Как использовать exec () для запуска другого файла в C ++ - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь запустить sender.cpp и receiver.cpp из файла master.cpp. Когда я запускаю свой файл master.cpp, и он не открывает ни файл sender.cpp, ни receive.cpp.

Я уже пытался заменить каждую команду exec.

//Master.cpp
int main(int argc, char *argv[])
{
cout << "main running" << endl;
int qid = msgget(IPC_PRIVATE, IPC_EXCL | IPC_CREAT|0600);
char* args[2];
string sender = "./sender";
args [0] = (char*) sender.c_str();
args [1] = NULL; 
pid_t cpid = fork();
if (cpid == 0){
    printf("Master file: created sender with PID %d.\n", getpid());
    execvp(args[0], args);
}
.....

//Sender.cpp
...
int main(int argc, char *argv[])
{
int running = 1;
struct my_msg_st some_data;
int msgid;
char buffer[BufSIZ];

msgid = msgget((key_t)1234, 0666 | IPC_CREAT);

if (msgid == -1){
    fprint(stderr, "msgget failed with error: %d\n", errno);
    exit(EXIT_FAILURE);
}
while(running) {
    printf("Enter some text: ");
    fgets(buffer, BUFSIZ, stdin);
    some_data.my_msg_type = 1;
    strcpy(some_data.some_text, buffer);

    if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -1){
        fprintf(stderr, "msgsnd failed\n");
        exit(EXIT_FAILURE);
    }
    if (strncmp(buffer, "end", 3) == 0){
        running = 0;
    }
}
exit(EXIT_SUCCESS);
}

После запуска файла master.cpp он должен запросить ввод из файла отправителя в терминале, а затем отправить сообщение наприемник.

...