- 論壇徽章:
- 0
|
我用setsid后,然后去讀寫前面打開的控制終端,apue里面講后臺進(jìn)程讀控制終端會產(chǎn)生SIGTTIN信號,但是我這下面sig_ttin函數(shù)一直沒有執(zhí)行,后來我把read換成write發(fā)現(xiàn)也沒有產(chǎn)生SIGTTOU信號,不明白。誰能詳細(xì)講講控制終端。
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<stdlib.h>
static void sig_ttin(int no)
{
printf("sig_ttin\n");
}
int main()
{
pid_t pid;
if ((pid = fork()) < 0){
perror("fork");
exit(1);
} else if (0 == pid) {// child
int result = open("/dev/pts/0", O_RDWR);
if (result != -1)
printf("open success!\n");
setsid();
printf("pid:%d, ppid:%d, gpid:%d, sid:%d\n", getpid(), getppid(), getpgrp(), getsid(0));
signal(SIGTTIN, sig_ttin);
char c;
if (read(result, &c, 1) < 0)
perror("read");
close(result);
result = open("/dev/pts/0", O_RDWR);
if (result < 0)
printf("can't open tty\n");
}
exit(0);
}
|
|