加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何确定Linux TTY是否正在控制进程组

发布时间:2020-12-14 01:41:27 所属栏目:Linux 来源:网络整理
导读:所以我有一个tty(让我们说/ dev / tty5)并且想要知道它当前是否是进程组或会话的控制tty,或者它是否当前是无主的. POSIX有两个API函数,它们在这里建议:tcgetpgrp()和tcgetsid(),这两个函数只有在调用者将tty作为控制tty的情况下才有效 – 在这种情况下,它们
所以我有一个tty(让我们说/ dev / tty5)并且想要知道它当前是否是进程组或会话的控制tty,或者它是否当前是无主的. POSIX有两个API函数,它们在这里建议:tcgetpgrp()和tcgetsid(),这两个函数只有在调用者将tty作为控制tty的情况下才有效 – 在这种情况下,它们使得它们几乎无用(实际上我不是t看到tcgetsid()的重点.

任何人都有一个建议,我如何能够以一种理智的方式从C中检测终端当前是否是一个进程的控制终端?我只关心Linux,所以如果需要特定于Linux的API,那对我来说没问题.

解决方法

BSD:int ioctl(int tty,TIOCGETPGRP,int * foreground_group);

Linux:int tcgetpgrp(int tty,int * foreground_group);

Linux仅在您拥有非自有终端的权限时才有效,即您是root用户.这是一种有意的安全实施. BSD ioctl()允许任何tty将任何进程组(甚至是非远程进程组)作为其前台tty. POSIX只允许访问具有tty作为其控制tty的进程组.这种限制不允许在BSD ioctl中出现一些模糊和安全性破坏的情况.

你想做什么?如果你是提供信号的内核,你应该只担心过程控制tty.

编辑:我忘了/ proc来自www.die.net:的/ proc / [数] / FD这是一个子目录,包含进程已打开的每个文件的一个条目,由其文件描述符命名,并且是实际文件的符号链接.因此,0是标准输入,1个标准输出,2个标准误差等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读