Linux下的进程间关系

进程组
在linux中,每一个进程还属于一个进程组,一个进程组有多个进程组成,通常,他们联合起来作业,可以接受从同一个终端下的各种信号。并且每一个进程组都有一个进程组ID。在Linux中叫做PGID,一个进程组由多个进程组成,进程组中有一个组长进程,组长进程的标识是他的进程ID和组ID相同。一般一个进程组中第一个创建的进程就是组长进程。一个进程组中只要还有一个进程存在,那么这个进程组就存在。
我们可以通过ps 命令,来查看进程信息。
-a 列出所有用户的进程
-x 不仅列出有终端控制的,也列出没有终端控制的进程。
-j列出与作业控制相关的信息

这里写图片描述
PID:进程ID
PPID:父进程ID
PGID:所属进程组的ID
SID:会话ID
TTY:相关控制终端


作业
Shell分前后台来控制的不是进程而是作业或者叫做进程组,Shell可以运行一个前台作业和任意多个后台作业,这就叫做作业的控制。
作业和进程组的区别:如果一个进程组中的某个进程fork出来了子进程,那么子进程属于进程组,而不属于作业。
现在我们就可以理解为什么当我们运行一个进程之后,再输入命令,就没有作用了,原因就是因为让我们启动一个作业以后,默认是放在前台的,而前台只能有一个进程,因此Shell就被提到后台了,无法接受我们的指令。

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 int main()
  4 {
  5     pid_t pid;
  6     if(pid=fork()==0)
  7     {
  8         //child
  9        while(1)
 10        {
 11            printf("hello, world\n");
 12            sleep(2);
 13        }
 14
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值