unix环境变成 第九章 9.6终端控制&&9.7函数tcgetpgrp,tcsetpgrp和tcgetsid

控制终端和会话还有一些特性

1.一个会话可以有一个控制终端,通常会话的第一个进程打开一个终端(终端设备或伪终端设备)后,该终端就成为该会话的控制终端。
2.建立与控制终端连接的会话首进程被称为控制进程。(controlling process)
3.一个会话中的几个进程组可被分成一个前台进程组以及一个或者多个后台进程组。
4.如果一个会话有一个控制终端,则它有一个前台进程组,会话中的其他进程组则为后台进程组。
5.无论何时进入终端的中断键(ctrl+c)或退出键(ctrl+\),就会将中断信号发送给前台进程组的所有进程。
6.如果终端接口检测到调制解调器(或网络)已经断开,则将挂断信号发送给控制进程(会话首进程)。

 需要有一种方法通知内核哪一个进程组是前台进程组

#include <unistd.h>
pid_t tcgetpgrp(int filedes); //返回值:若成功则返回前台进程组的进程组ID,出错则返回-1.
int tcsetpgrp(int filedes, pid_t pgrpid); //返回值:成功则返回0,出错则返回-1.

通过tcgetsid函数,应用程序就能获取会话首进程的进程组ID。

#include <termios.h>
pid_t tcgetsid(int fd);
//成功返回会话首进程的进程组ID,出错返回-1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值