这是我中期的问题。我知道在运行程序后会有2颗星。但我不确定为什么。这个问题要我画一个图来说明原因。我不知道如何画它。
感谢您的帮助!
#include <stdio.h>
#include <unistd.h>
unsigned char i;
int main() {
unsigned int fs;
for (i=0; i<2; i++) {
fs = fork();
if (fs) { printf("*\n"); }
}
}
答案 0 :(得分:2)
系统调用fork()用于创建进程。它不需要参数并返回进程ID。
fork()的目的是创建一个新进程,该进程成为调用者的子进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。
返回fork()
的值如果fork()返回负值,子进程的创建 不成功。
fork()向创建的子进程返回零。
fork()将正值,子进程的进程ID 返回给父级。
参考:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html
答案 1 :(得分:2)
系统调用Fork()用于创建进程。 它返回一个如下所示的整数:
以下是流程树图的示例:
#include <stdio.h>
int main()
{
fork(); /* A */
( fork() /* B */ &&
fork() /* C */ ) || /* B and C are grouped according to precedence */
fork(); /* D */
fork(); /* E */
printf("forked\n");
return 0;
}
有关更清晰的解释请访问此链接: https://www.geeksforgeeks.org/fork-and-binary-tree/