fork函数
刚刚接触linux,感觉还蛮有意思的,Linux里一切皆文件,没有windows系统的傻瓜式操作,在Linux里面用指令控制感觉逼格一下上了一个档次,刚刚学习了fork函数,感觉挺值得来写一写的,虽然会写的很烂...
fork函数用于多进程编程,会产生父子进程,多个进程同时完成N个事务,提高执行效率。
说白了fork函数就是用来创建进程 pid_t fork(void)
注意:fork函数调用一次返回两次(在新创建的进程返回一次,在调用fork的进程(就是原来的进程)返回一次,新进程(子进程)返回0,调用fork的进程(原来的进程即父进程))返回子进程的pid。
有人肯定会有疑问,为什么返回子进程的pid不返回父进程的pid?
因为子进程的pid没有函数可以得到,父进程的pid 可以通过ppid()这个函数得到,所以只能在最初获取子进程的pid,所以父进程返回值子进程的pid。
只是这么说还是很空的,不容易理解,下面写两个例子会帮助理解。
n=fork();
if(n==0)
{
printf("A\n");
}
else
{
printf("B\n");
}
运行结果:B A void main()
{
int i=0;
for(;i<2;++i)
{
if(fork())
printf(“A\n”);
else
printf(“B\n”);
}
}
运行结果:三个A三个B,但顺序不一定。因为调用父子进程先后每台电脑是不一样,所以顺序并不一定。
void main()
{
int i=0;
for(; i < 2;i++)
{
if(fork)
printf(“A”);
else
printf(“B”);
}
}
运行结果:四个A四个B,顺序不一定。这个程序和上面那个程序就只差了'\n',但结果就不一样了,是因为结果存储在缓冲区,只有当缓冲区遇到\n才会将结果显示在界面上,否则就等程序运行结束或缓冲区满再显示到界面上。
***需要注意的是父子进程都从fork函数之后的代码开始执行,例如:
if(fork())
{}
else
{}
printf("hhhhh\n");
则结果打印出来不论是父进程还是子进程都会有hhhhh这句。
相关阅读
刚开始学习《利用Python进行数据分析》这本书,当学习到对Serises和Dataframe进行排名的时候,有些疑惑,去网上搜索了很多关于这方面的
文件大小单位转换函数-getFileSize($bytes)
function getFileSize($bytes){ if ($bytes >= pow(2,40)) { # code... $return = round($bytes/pow(1024, 4),2); $suffi
有网友问到excel中能不能用函数求和,excel函数是很强大的功能,求和就不在话下了,在常用的Excel操作中,SUM求和是使用频率最高的一个函
摘自《python程序设计基础》蔡永铭主编工具:python 3.7 64-bit官方链接:https://www.python.org/平台:Windows10floor函数的使用 在p
关于execl()函数族的用法不在赘述,其他博主介绍的很详细。下面说下作者在使用该函数时所犯的错误: 作者想通过使用execl()函数在子