首页 > 解决方案 > 接受命令行参数和进程

问题描述

接受像“program /path_name -l”这样的命令行参数并创建父进程和子进程。需要使用 fork 来创建孩子,并且孩子应该使用 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;
}

标签: coperating-system

解决方案


推荐阅读