c - 接受命令行参数和进程
问题描述
接受像“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;
}
解决方案
推荐阅读
- python - 状态 200 但我没有得到一些响应。蟒蛇请求
- c# - 消除 C# Excel Interop 中的一系列行
- angular - 浏览器中不显示数据 - 仅允许使用数组和可迭代对象
- excel - 将通过输入框选择的列设置为变量
- c++ - C++ - 显式和隐式命名空间实现差异
- java - 如何将 EPOC 时间转换为日期字符串(YYYY-MM-dd)?
- security - 将从 socket.io-client 导出的对象放在 window 对象上会不会是一种安全妥协?
- vba - 使用样式或编号列表来选择标题之间的内容
- python - 当父类不返回任何内容而子类不返回时,如何正确子类化一个类
- mysql - 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码