进程复制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