【发布时间】:2016-02-28 22:57:31
【问题描述】:
我尝试使用以下代码编写简单的 fork-and-exec 应用程序
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
int
spawn(char *program, char *arg_list[])
{
pid_t child_pid;
child_pid = fork();
if (child_pid != 0)
return child_pid;
else {
execvp(program, arg_list);
fprintf(stderr, "an error occured\n");
exit(EXIT_FAILURE);
}
}
int
main()
{
int child_stat;
char *arg_list[] = {
"ls",
"-l",
"/",
NULL
};
spawn("ls", arg_list);
printf("return to parent\n");
return 0;
}
一切都很好,但成为 ls 后的孩子不会终止。 外壳看起来像 。/主要的 回到父母身边 -- ls 在这里输出 --
但是没有出现命令提示符,所以我假设一个进程挂起,原因对我来说并不明显。请你指出我的错误。 提前致谢。
【问题讨论】:
-
请以可读的方式格式化程序。无论如何,这样的编程问题在这里都是题外话。
-
使用
gcc -O2 -Wall编译会产生大量错误和警告。在继续之前修复这些问题。修复错误后,我在这里工作正常。
标签: fork