进程号(如何查询进程号,父进程号和进程组号)

大家好,这里是小缺,一名对嵌入式软件开发充满热情的探索者。这一篇文章主要内容是进程号是什么,如何查询进程号,父进程号以及进程组号

1.1 进程号

每个进程都有一个唯一的标识符,称为进程号(PID),它是一个pid_t类型的整数。

进程号的范围通常是从0到32767.

进程号是由操作系统在创建进程时自动分配的,用户程序不能直接指定进程号。

在ubuntu中查看当前系统中所有的开启的进程

输入ps ajx

PPID:当前进程的父进程的进程号

PID:当前进程的进程号

PGID:当前进程所在的组的进程组ID

COMMAND:当前进程的名字

特殊的进程号:

  • 在linux系统中进程号由0开始。
  • 进程号为0及1的进程由内核创建。
  • 进程号为0的进程通常是调度进程,常被称为交换进程(swapper)。
  • 进程号为1的进程通常是init进程,init进程是所有进程的祖先。
  • 除调度进程外,在linux下面所有的进程都由进程init进程直接或者间接创建。

进程号(PID)

    标识进程的一个非负整型数。

父进程号(PPID)

    任何进程(除init进程)都是由另一个进程创建,该进程称为被创建进程的父进程,对应的进程号        称为父进程号(PPID)。

进程组号(PGID)

    进程组是一个或多个进程的集合。他们之间相互关联,进程组可以接收同一终端的各种 信号,      关联的进程有一个进程组号(PGID) 。

Linux操作系统提供了三个获得进程号的函数

getpid()、getppid()、getpgid()

 #include <sys/types.h>
 #include <unistd.h>//所需头文件
 pid_t getpid(void);
 //功能:获取当前进程的进程号
 pid_t getppid(void);
 //功能:获取当前进程的父进程的进程号
 pid_t getpgid(pid_t pid);
 //功能:获取当前进程所在进程组的id

  操作案例

 #include <stdio.h>
  #include <sys/types.h>
  #include <unistd.h>
 
  int main(int argc, char const *argv[])
  {
     //获取当前进程的进程号
     printf("pid = %d\n", getpid());
 
     //获取当前进程的父进程的id
     printf("ppid = %d\n", getppid());
 
     //获取当前进程所在组的id
     printf("pgid = %d\n", getpgid(getpid()));
 
     while(1)
     {
 
     }
 
     return 0;
  }

执行结果

下一篇我会详情说明如何使用fork函数创建进程。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值