我需要知道这创造了多少个进程。我认为这个程序会创建6个进程吗?
#include <stdio.h>
#include <unistd.h>
int main() {
/* fork a child process */
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, “Fork failed”);
exit(-1);
} else if (pid != 0) {
/* fork another child process */
fork();
}
/* fork another child process */
fork();
return 0;
}
答案 0 :(得分:2)
以下是我会找到答案的方法。在每个fork()
之后,我会打印当前进程ID。当我运行程序时,我会记下所有唯一的进程ID,这会告诉我有多少进程存在:
这是我的计划:
#include <stdio.h>
#include <unistd.h>
int main() {
/* fork a child process */
pid_t pid = fork();
printf("fork I: %d\n", getpid()); fflush(stdout);
if (pid < 0) {
fprintf(stderr, "Fork failed");
exit(-1);
} else if (pid != 0) {
/* fork another child process */
fork();
printf("fork II: %d\n", getpid()); fflush(stdout);
}
/* fork another child process */
fork();
printf("fork III: %d\n", getpid()); fflush(stdout);
return 0;
}
这是我的输出:
fork I: 7785
fork I: 7786
fork II: 7785
fork III: 7785
fork III: 7786
fork II: 7787
fork III: 7788
fork III: 7789
fork III: 7787
fork III: 7790
在我的程序运行中,总共有6个进程,包括原始进程。