Возьмите аргументы командной строки, например, "program / path_name -l", и создайте как родительский, так и дочерний процесс. Для создания дочернего элемента необходимо использовать вилку, а дочерний элемент должен заменить себя с помощью одной из команд exec. Родительскому процессу необходимо дождаться, пока дочерний процесс завершит работу, и получить статус выхода, а затем использовать статус выхода, чтобы определить, нормально ли вышел из программы и был ли процесс завершен каким-либо сигналом. У меня проблема с тем, что моя программа всегда получает статус выхода 1. Я не уверен, что правильно делаю всю командную строку.
Это то, что у меня так далеко:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, char *argv[]){
pid_t pid = fork();
if (pid == -1){
perror("Fork Failure");
return EXIT_FAILURE;
}
else if ( pid == 0 ){
execvp(argv[1], &argv[1]);
return EXIT_FAILURE;
}
int status;
waitpid(pid, &status, 0);
if ( WIFEXITED(status) ){
int exit_status = WEXITSTATUS(status);
printf("Exit status is %d\n", exit_status);
}
return 0;
}