• 进程控制


    一、环境变量

    通过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函数

     

     1.回收指定进程(阻塞)

    2.回收所有进程,非阻塞,未回收时wpid=0

    2.回收所有进程

  • 相关阅读:
    MySQL中的while循环和repeat循环的区别
    Python 基础语法_Python脚本文件结构
    Python 基础语法_Python脚本文件结构
    MySQL存储过程和函数的区别
    第四章 语句和声明
    haproxy 4层和7层负载
    献血是件很赞的事——北漂18年(26)
    JavaScript字符串数值比较问题
    MySQL查看所有可用的字符集
    MySQL获取表格信息
  • 原文地址:https://www.cnblogs.com/sclu/p/11247533.html
Copyright © 2020-2023  润新知