Linux 进程复制 fork2

导读:本篇文章讲解 Linux 进程复制 fork2,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

进程复制fork

1. fork() || fork()
编写以下代码,A打印几次?

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 int main()
  5 {
  6     fork() || fork();
  7     printf("A\n");
  8
  9     exit(0);
 10 }

图解:
在这里插入图片描述
运行结果:

wys@DESKTOP-2OU3HRV:~/mycode/day08$ ./main
A
wys@DESKTOP-2OU3HRV:~/mycode/day08$ A
A

wys@DESKTOP-2OU3HRV:~/mycode/day08$

2.fork() && fork()
编写以下代码,A打印几次?

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 int main()
  5 {
  6     fork() && fork();
  7     printf("A\n");
  8
  9     exit(0);
 10 }

图解
在这里插入图片描述
运行结果:

wys@DESKTOP-2OU3HRV:~/mycode/day08$ gcc main.c -o main
wys@DESKTOP-2OU3HRV:~/mycode/day08$ ./main
A
A
A

3.for循环中
3.1
编写以下代码,A打印几次?

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 int main()
  5 {
  6     for(int i = 0; i < 2; i++)
  7     {
  8         fork();
  9         printf("A\n");
 10     }
 11
 12     exit(0);
 13 }

图解:
在这里插入图片描述

运行结果:

wys@DESKTOP-2OU3HRV:~/mycode/day08$ gcc main.c -o main
wys@DESKTOP-2OU3HRV:~/mycode/day08$ ls
main  main.c
wys@DESKTOP-2OU3HRV:~/mycode/day08$ vim main.c
wys@DESKTOP-2OU3HRV:~/mycode/day08$ ./main
A
A
A
A
A
A

3.2
编写以下代码,A打印几次?

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 int main()
  5 {
  6     for(int i = 0; i < 2; i++)
  7     {
  8         fork();
  9         printf("A");
 10     }
 11
 12     exit(0);
 13 }

图解:
在这里插入图片描述
因为printf(“A”);中没有”\n”,所以执行完printf语句后不会刷新缓冲区,所以执行fork()语句后,会拷贝父进程在缓冲区中的内容,一共打印8次
运行结果:

wys@DESKTOP-2OU3HRV:~/mycode/day08$ vim main.c
wys@DESKTOP-2OU3HRV:~/mycode/day08$ gcc main.c -o main
wys@DESKTOP-2OU3HRV:~/mycode/day08$ ls
main  main.c
wys@DESKTOP-2OU3HRV:~/mycode/day08$ ./main
AAAAwys@DESKTOP-2OU3HRV:~/mycode/day08$ AAAA

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95582.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!