一、环境变量
通过extern char** environ打印环境变量信息
#include<stdio.h> extern char ** environ; int main() { int i; for(i=0;environ[i];i++) { printf("_%s_ ",environ[i]); } return 0; }
二、fork函数
1.创建单个子进程。
#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main() { pid_t pid; //接收进程返回值 printf("程序开始运行…… "); // sleep(1); pid=fork(); if(pid==-1) { perror("for error:"); exit(1); } else if(pid ==0) { printf("I am child,pid = %u,ppid = %u ",getpid(),getppid()); } else { printf("I am Parent,pid = %u,childid =%u,ppid= %u ",getpid(),pid,getppid()); sleep(1); } printf("结束 "); return 0; }
2.循环创建子进程
#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main() { int i; pid_t pid; //接收进程返回值 printf("程序开始运行…… "); // 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 ",i+1); } else { sleep(i); printf("I am parent "); } return 0; }
三、 gdb调试
四、exec函数族
1.execlp
2.execl
3.execv
通过dup2将进程信息写入文件
五、孤儿进程
六、僵尸进程
七、wait函数
wait只能回收一个子进程,回收多个子进程需要用循环
1.正常结束
2.异常退出
八、waitpid函数