【发布时间】:2014-10-11 22:13:41
【问题描述】:
我正在尝试使用 Java 创建一个小程序来派生两个新的子进程。它是为初学者的编程课准备的,他们的教程是 C它)。
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
pid t pid;
/*fork a child process*/
pid = fork();
if (pid < 0) { /*error occurred*/
fprintf(stderr, "Fork Failed");
return 1;
}
else if (pid == 0) {/*child process */
execlp("/bin/ls", "ls", NULL);
}
else { /*parent process*/
/*parent will wait for the child to complete */
wait(NULL);
printf("Child Complete");
}
return 0;
}
更新:
我应该为每个子进程及其父进程附加一个 id,在子进程执行时打印信息,并在它终止时打印终止通知。我现在看到上面的这段代码列出了当前目录的内容,并在进程终止时打印“Child Complete”。整个目录的列表是否被视为一个过程?如果是这样,第二个新子进程在哪里/如何出现?
【问题讨论】:
-
不要使用 C 教程来学习 Java。它在子进程中运行一个名为
ls的命令行实用程序。 -
@ElliotFrisch 我希望我不必这样做,但正如我提到的那样,这是为了学校。
-
我认为这个答案非常接近您的期望:stackoverflow.com/a/5437863/51760
-
@Aif 我看到了这篇文章,但想知道这是运行多个进程还是只是多个线程?