我正在尝试为作业输出'ps'的结果,但我遇到了一些我想弄明白的怪癖。
这可以正常工作,并在shell中显示ps的输出:
//Create "ps -u laser"
int pid_ps = fork();
char *argv[1] = {"-u laser"};
if (pid_ps == 0) {
execv("/bin/ps", argv);
}
现在,这是我的幻灯片中给出的格式,但只是在运行时给出“用法:”和“格式是一个或多个:”ps的通知:
//Create "ps -u laser"
int pid_ps = fork();
char *argv[2] = {"-u", "laser"};
if (pid_ps == 0) {
execv("/bin/ps", argv);
}
我也尝试在数组的末尾加上0和NULL,这是在其他答案中提出的,但没有运气。
我可能忽略了一些小事,但我对c不太熟悉。任何见解都表示赞赏。
答案 0 :(得分:10)
使用char *argv[] = {"/bin/ps", "-u", "laser", 0};
- 第一个参数是可执行文件名。
编辑:样本。
int pid_ps = fork();
if (pid_ps == 0) {
char *argv[] = {"/bin/ps", "-u", "laser", 0};
execv("/bin/ps", argv);
}
以上代码段经过测试并正常运作。