(资料图)
这里先说一下为什么用fork:
例如:Web服务器,当许多浏览器来访问的时候,如果服务器等一个处理完再处理另一个,那这样就太慢了,服务器可以为每一个请求开一个进程,这样就实现了多进程,提高处理速度。例如:有一个大工程,可以分为许多个模块,就可以为每一个模块创建一个线程,当然有的模块之间有先后顺序,这可以进行特殊处理。1. 概念:
fork是在Linux中使用的一个分叉函数。若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记,出错则返回-1。可以把父进程和子进程的关系看做一个链表,父进程指向子进程,子进程如果还有子进程就再指向子进程,否则为空。
2. 特性:
每个进程都有一个非负整数表示的唯一进程ID;fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程;3. 特殊进程:
ID为0的是调度进程,该进程是内核的一部分,不执行任何磁盘上的程序 ;ID为1的是Init进程,init通常读取与系统有关的初始化文件(/etc/rc*文件、/etc/inittab文件、/etc/init.d/中的文件) ;ID为2的是页守护进程,负责支持虚拟存储器系统的分页操作;常用的操作函数:
#include//头文件pid_t getpid(void); //返回调用进程的IDpid_t getppid(void); //当前进程父进程ID
4. 举个栗子
#include#include #include using namespace std;int main(){ int count = 0; pid_t pid = fork(); if(pid < 0) printf("error\n"); else if(pid == 0){ printf("Child Id = %d\n", getpid()); count++; }else{ printf("Parent Id = %d\n", getpid()); count++; } prinf("count = %d\n", count); return 0;}
输出结果为:
Parent Id = 3496count = 1Child Id = 3497count = 1
父进程和子进程没有执行的先后顺序,再加个图,加深一下理解:
图 1 程序示意图
国际市场偏弱运行 2月以来,国际煤炭市场偏弱运行。欧洲三港的煤炭库存在高位徘徊。2月10日,欧洲三港煤炭总库存达到5699万吨,比去年更多
2023-02-22 10:12:16截至目前,全国各省(市、区)的2023年政府工作报告已陆续发布,其中关于能源领域的表述勾勒出各地今年乃至未来5年能源产业发展的路线图和更多
2023-02-22 09:54:13监测数据显示,1月天津市煤炭均价为734元吨,环比持平,同比下降12%。1月动力煤市场整体运行平稳,上游煤矿自元旦后陆续安排春节放假,平更多
2023-02-22 10:14:29根据巴彦淖尔市商务局监测的数据显示,1月份,煤炭均价为102778元吨,较上月下降46%。其中,无烟煤2号平均价格为81667元吨,较上月下降35%更多
2023-02-22 10:12:05上周以来,在刚性采购需求明显恢复和短期大幅下跌后的投机需求带动下,煤炭市场情绪面持续好转,价格迎来全面上行。 产地方面,库存压更多
2023-02-22 09:53:10一、全省用电情况 1月份,江苏省全社会用电量53662亿千瓦时,同比下降1301%;年累计全社会用电量53662亿千瓦时,同比下降1301%。 本更多
2023-02-22 08:55:28截至目前,大唐华银电力股份有限公司圆满完成了2023年电煤中长期合同订货工作,全年电煤需求实现长协煤100%全覆盖,订货总量创历史新高。更多
2023-02-22 09:04:20国家矿山安全监察局陕西局消息,2022年12月份,陕西省原煤产量665321万吨,同比增加7036万吨,上升107%,环比增加28259万吨,上升444%。 更多
2023-02-22 08:54:30上周,终端库存高企,日韩对澳煤需求继续保持低迷,欧洲地区天然气库存高位且煤炭现货供应较为充足,抑制终端采购兴趣,澳大利亚动力煤价更多
2023-02-21 16:15:15中国铁路太原局集团有限公司介绍称,春运40天累计完成发送煤炭72816万吨,同比增12%,旅客发送量同比增长187%。 为确保春运期间电煤等更多
2023-02-21 10:14:28