进程创建关于fork()浅解
来源:互联网 发布:中老年品位 知乎 编辑:程序博客网 时间:2024/06/06 06:36
# include<stdio.h> main() { int p1, p2; while((p1=fork())= = -1); if(p1= =0) putchar(‘b’); else { while((p2=fork())= =-1); if(p2= =0) putchar(‘c’); else putchar( ‘a’); } }
c语言调用函数while((p1=fork())==-1)是什么意思
相关说明: (p1=fork())==-1是什么情况?
那这个函数是什么意思呢?
int p1,p2;
while((p1=fork())==-1);
if(p1!=0)
{
while((p2=fork())==-1);
if(p2==0) putchar('b');
else putchar('c');
}
else putchar('a');
说是父进程就输出a,子进程就输出b和c,无法理解啊
(p1=fork())==-1
分解为2步:
p1=fork()
p1==-1
这么分解,应该清楚了吧?
creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inheritedsgainhsu的回答就挺好的。
下面是man fork的描述
如果等于赋值语句p1=fork()和循环语句while(p1==-1)的复合写法
fork函数的返回值赋值给p1,则继续执行循环体,并判断p1是否等于-1
fork()应该是一个不带参数,返回一个int型数据的函数吧,
while((p1=fork())==-1);的意思是:
调用fork()函数,将返回值交给p1,然后判断p1是否等于-1;
看到这个我想到了,输入多个字符时吸收换行符的办法:
while((ch=getchar())!='\n');
c语言调用函数while((p1=fork())==-1)的意思是:
fork函数是在当前进程中新建立一个子进程,如果这个创建子进程失败,那么返回-1,这个实际是把创建进程的返回值和-1比较看看是否创建失败。
因为是写在while语句里,那么当创建失败之后,如果在while里面没有break或者跳出,当while执行体执行结束后又会执行(p1=fork())==-1,等于不断重复创建子进程一直到创建成功为止。
注意这里会返回两次,因为父进程创建子进程的时候复制了父进程的地址空间,那么父子进程地址空间的语句执行都在等待fork返回的那句话里。
所以返回两次是父进程返回一个,返回的是子进程的ID,子进程返回一次,返回的是0.
那么我们根据不同的返回值就可以分别写出我们想要的父子进程的逻辑。
p1=fork()失败的情况下会返回-1
while((p1=fork())==-1)中就是对失败的情况进行处理
fork函数是在当前进程中新建立一个子进程,如果这个创建子进程失败,那么返回-1,这个实际是把创建进程的返回值和-1比较看看是否创建失败。
因为是写在while语句里,那么当创建失败之后,如果在while里面没有break或者跳出,当while执行体执行结束后又会执行(p1=fork())==-1,等于不断重复创建子进程一直到创建成功为止。
注意这里会返回两次,因为父进程创建子进程的时候复制了父进程的地址空间,那么父子进程地址空间的语句执行都在等待fork返回的那句话里。
所以返回两次是父进程返回一个,返回的是子进程的ID,子进程返回一次,返回的是0.
那么我们根据不同的返回值就可以分别写出我们想要的父子进程的逻辑。
- 进程创建关于fork()浅解
- 关于fork 创建进程
- 关于fork创建子进程的疑问
- 创建进程fork
- 创建进程库函数fork
- fork() 创建新进程
- 创建进程库函数fork
- python 创建进程fork
- fork创建子进程
- fork创建进程
- Linux:fork进程创建
- fork进程创建
- fork创建进程
- fork函数创建进程
- fork创建进程
- fork创建多进程
- fork创建子进程
- fork创建子进程
- mysql主从复制配置(基于GTID)
- 程序员可以的8种境界
- muduo的Channel类剖析
- android4.4沉浸式状态栏总结
- 欢迎使用CSDN-markdown编辑器
- 进程创建关于fork()浅解
- Linux下的C语言编程——简单实现tcp客户端和服务器
- 理解线程3 c语言示例线程基本操作
- C语言编译的各个阶段
- 3. Longest Substring Without Repeating Characters
- Oracle进阶一
- 【考研数学】——高数
- mysql在线将基于日志的复制和基于事务的复制互换
- Pthread使用总结