进程控制
Posted sclu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程控制相关的知识,希望对你有一定的参考价值。
一、环境变量
通过extern char** environ打印环境变量信息
#include<stdio.h> extern char ** environ; int main() int i; for(i=0;environ[i];i++) printf("_%s_\\n",environ[i]); return 0;
二、fork函数
1.创建单个子进程。
#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main() pid_t pid; //接收进程返回值 printf("程序开始运行……\\n"); // sleep(1); pid=fork(); if(pid==-1) perror("for error:"); exit(1); else if(pid ==0) printf("I am child,pid = %u,ppid = %u\\n",getpid(),getppid()); else printf("I am Parent,pid = %u,childid =%u,ppid= %u\\n",getpid(),pid,getppid()); sleep(1); printf("结束\\n"); return 0;
2.循环创建子进程
#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main() int i; pid_t pid; //接收进程返回值 printf("程序开始运行……\\n"); // sleep(1); for(i=0;i<5;i++) pid=fork(); if(pid==-1) perror("for error:"); exit(1); else if(pid ==0) break; else if(i<5) sleep(i); printf("I am child %d\\n",i+1); else sleep(i); printf("I am parent\\n"); return 0;
三、 gdb调试
四、exec函数族
1.execlp
2.execl
3.execv
通过dup2将进程信息写入文件
五、孤儿进程
六、僵尸进程
七、wait函数
wait只能回收一个子进程,回收多个子进程需要用循环
1.正常结束
2.异常退出
八、waitpid函数
1.回收指定进程(阻塞)
2.回收所有进程,非阻塞,未回收时wpid=0
2.回收所有进程
以上是关于进程控制的主要内容,如果未能解决你的问题,请参考以下文章