Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1427877
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类: 系统运维

2012-05-14 15:16:16



我们需要一种方法来告诉内核哪个进程组是前台进程组,以便终端设备驱动知道发送终端输入和终端产生的信号到哪里。



  1. #include <unistd.h>

  2. pid_t tcgetpgrp(int filedes);

  3. 成功返回前台进程组的进程组ID;错误返回-1

  4. int tcsetpgrp(int filedes, pid_t pgrpid);

  5. 成功返回0,错误返回-1


函数tcgetpgrp返回和在filedes上打开的终端相关联的前台进程组的进程组ID。


如果进程有一个控制终端,进程可以调用tcsetpgrp来设置前台进程组ID给pgrpid。pgrpid的值必须是相同会话里的一个进程组的进程组ID,filedes必须引用会话的控制终端。


多数应用程序没有直接调用这两个函数。它们通过用工作控制算过调用。


SUS定义了一个XSI扩展,被称为tcgetsid,来允许一个应用程序来得到会话领导的进程组ID,给定一个控制TTY的文件描述符。



  1. #include <termios.h>

  2. pid_t tcgetsid(int filedes);

  3. 成功返回会话领导的进程组ID。错误返回-1


需要管理控制终端的应用程序可以使用tcgetsid来标识控制终端领导的会话ID(,等价于会话领导的进程组ID)。

阅读(502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~