进程控制

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.回收所有进程

技术图片

 

以上是关于进程控制的主要内容,如果未能解决你的问题,请参考以下文章

进程控制

什么是进程,什么是进程控制块(PCB)?

操作系统中的进程控制

进程控制

进程控制---PCB(进程控制块)

进程控制器常见的一些进程都有哪些