作者superstition (big bomb)
看板LinuxDev
标题[问题] O_NOCTTY 禁止取得终端控制 无效?
时间Wed Jan 3 19:02:26 2007
小弟在 LINUX 上写了程序 , 依照<unix高级环境编程> 一书所说 ,
会话组长(session leader) 若不指明 O_NOCTTY 则打开终端设备会取得控制终端 ;
反之 , 若指明则就不取得控制终端.
但是程序上指明了依然无效还是取得控制终端 , 因为我额外写了
用子程序开启果然非会话组长无法取得控制终端 , 打开 tty12 时 ,
显示 "no job control in the Shell" , 表示控制终端取得失败 ,
为何 O_NOCTTY 对会话组长无效 ?
代码如下:
#include<sys/stat.h>
#include<unistd.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
int main()
{
pid_t pid=fork();
if(pid>0)
exit(0);
if(pid<0)
printf("first fork error\n"),exit(1);
if(setsid()<0)
printf("sedsid() error\n"),exit(1);
umask(022);
close(0);
close(1);
close(2);
int _new=open("/dev/tty12",O_RDWR|O_NOCTTY);
dup2(_new,0); //重新指向 stdin
dup2(_new,1); //重新指向 stdout
dup2(_new,2); //重新指向 stderr
execl("/bin/bash","bash",(char*)0);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.131.63