• Linux 进程管理与开发0


    1.进程的基本属性

            和进程基本相关的属性有:进程号(PID)、父进程号(PPID)、进程组号(PGID)系统的第一个进程是init进程,他的pid=1

    2.获取进程属性的函数

            extern _pid_t getpid(void);获取本身进程的PID函数 extern _pid_t getppid(void);获取父进程的PID函数 extern _pid_t getpgid(_pid_t _pid);获取本进程的进程组的PID函数,此参数为0则为本进程的进程组的PID如果为其他的值,则返回值就是其他进程组的PID extern _pid_t getpgrp(void);获取当前进程的进程组号

    3、简单程序测试:

    code:

    #include<stdio.h>
    #include<unistd.h>
    int main(int argc,char *argv[])
    {
        int i;
        printf("\tpid\t ppid \t pgid\n");
        printf("parent\t%d\t%d\t%d\n",getpid(),getppid(),getpgid(0));
        for(i=0;i<2;i++)
            if(fork()==0)
                printf("child\t%d\t%d\t%d\n",getpid(),getppid(),getpgid(0));
        return 0;
    }

    gcc –o getpid main.c

    ./getpid

    2011-07-29-10-59 

    在for循环里面开辟了3个进程循环了2次其中2999为整个进程的进程组的pid 2921为父进程就是上一级进程的pid

    查询ps –aux 为bash也就是shell本身的进程

    2011-07-29-11-59

    4.加入一个现有的组或者是一个新的进程组成的系统调用函数setpgid()

       int setpgid(pid_t pid ,pid__t pgid);

        其中第一个参数是为你想修改进程PGID的进程PID,第二个为新的进程组号,如果这两个参数是相等的话。则由Pid指定的进程为进程组长;如果是pid为0,则修改当前进程的pgid,如果是pgid=0,则有指定的进程pid将用于进程组pgid

  • 相关阅读:
    联考20200725 T1 String
    联考20200723 T1 数
    联考20200722 T3 积木
    联考20200722 T2 ACT4!无限回转!
    联考20200722 T1 集合划分
    联考20200721 T2 s2mple
    联考20200721 T1 s1mple
    联考20200719 T2 寻找规律
    联考20200719 T1 合并奶牛
    联考20200718 T2 树论
  • 原文地址:https://www.cnblogs.com/xmphoenix/p/2120779.html
Copyright © 2020-2023  润新知