首先你调用fork函数时,会创建一个子进程。fork会有两个返回值,一个是为0的值(父进程的PID)在父进程里执行的时候icount++ 最后printf打印的结果为3,还有一个是大于0的值(创建后的子进程PID)子进程里执行icount-- 最后打印的结果为1。 当然fork失败的时候返回值就是小于0了。
成都创新互联主要从事网站设计、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务天山,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
提醒一下
创建子进程时,系统并没有立即复制一个父进程的数据段、栈、堆的副本,而是由内核把父进程的这些内存设置为只读,由父子进程共享,若父子进程有任意一个试图修改该区域,内核为修改页面复制一个副本,达到父子进程互不干扰。
纯手打,希望对你有帮助!!!!!!
函数签名: pid_t fork(void);
子进程中返回0,父进程中返回子进程ID,出错返回-1
函数签名:
pid_t waitpid(pid_t pid,int* stat_loc,int options);
函数签名:
pid_t getpid(void);
pid_t getppid(void); //用于获取父(parent)进程的pid
函数签名:
void eixt(int status);
示例1 创建一个这样的进程
创建一个如下的
fork一般用于处理多线程任务。比如在网络中,你需要同时发送多种请求报文,则可以fork出子进程来进行发包任务,而父进程则直接去做自己的逻辑任务。
学习函数可以从功能入手,看它能够实现那些特定的需求。网络上给的只能是教科书似的定义,要是你想收获更多,建议看一些开源代码。
1、fork一般用于处理多线程任务。比如在网络中,需要同时发送多种请求报文,则可以fork出子进程来进行发包任务,而父进程则直接去做自己的逻辑任务。
2、所谓运行时间指的是已经运行了多长时间还是从进程创建到进程退出的时间?输入的程序是由程序启动还是已经在运行的
,如果是已经存在的,就试着去获取进程创建时间(WIN32
提供这样的API),然后获取当前时间,就可以得到进程已经运行了多久。如果是程序启动的,那就用类似time这种函数打桩就可以了。