我已经对此感到困惑了一段时间,现在我可以使用一些帮助。我正在尝试创建一个循环,该循环将分叉一个子进程并通过 execve() 调用“echo hello”。
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(int argc, char *argv[],char *envp[]){
int i = 0;
while(i<10){
pid_t pid;
pid = fork();
if(pid != 0){
int status;
waitpid(-1, &status, 0);
}
if(pid == 0) {
char *arg_array[2];
arg_array[0]="echo";
arg_array[1]="hello";
char filename[] = "/bin/echo";
if (execve(filename,arg_array,envp) == (-1)) {
printf("ERROR!\n");
exit(1);
}
}
i++;
}
}
起初,代码在第一次运行时失败,而在每次后续运行时都成功。现在,在清理它以在这里展示之后,它根本不会成功 - 我得到的只是错误!x 10. 我一定是进一步破坏了什么,我不知道是什么。
这只是我在这个网站上的第二个问题,所以如果您有任何改进我的问题/建设性批评的建议,请分享!谢谢你。