Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C forks及其功能?_C_Fork - Fatal编程技术网

C forks及其功能?

C forks及其功能?,c,fork,C,Fork,我有以下代码,有人问我“A”、“B”、“C”、“D”、“E”将打印多少次 fun() { printf("A"); fork(); printf("B"); if (fork() != 0) { printf("C"); fork(); printf("D"); } printf("E"); } 因此,它应该是: A A B E 我不确定我上面的答案是否正确?如果(fork()!=0)行做什么?来自: 成功时,子进程的PID在父进程中返

我有以下代码,有人问我“A”、“B”、“C”、“D”、“E”将打印多少次

fun() {
  printf("A");
  fork();
  printf("B");
  if (fork() != 0) {
     printf("C");
     fork();
     printf("D");
  }
  printf("E");
}
因此,它应该是:

A
A 
B
E
我不确定我上面的答案是否正确?如果(fork()!=0)行做什么?

来自:

成功时,子进程的PID在父进程中返回,0在子进程中返回。失败时,在父进程中返回-1,不创建子进程,并且错误号设置正确

如果(fork()!=0){…}行正在检查以确保当前进程不是原始fork进程的子进程。只有父进程将执行此块中的代码


这是因为
fork()。两个分叉中的每一个分叉,但只有两个父分叉进入if语句并打印c。这两个fork和所有4个procs都打印了d。然后,6个进程中的每一个(来自if fork的两个子进程和来自if print e的4个线程)

您无法确定顺序,但每个字母的编号为:

x1

b x2

cx2

d x4

e x6