2
這是一個簡單的例子來使用tcsetpgrp功能:如何使用tcsetgprp功能
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
static void judge(void){
pid_t pid;
pid = tcgetpgrp(STDIN_FILENO);
if(pid == -1){
perror("tcgetpgrp");
return;
}else if(pid == getpgrp()){
printf("foreground\n");
}else{
printf("background\n");
}
}
int main(void){
signal(SIGTTOU,SIG_IGN);
judge();
int result;
result = tcsetpgrp(STDIN_FILENO,getpgrp());
if(result == -1){
perror("tcsetpgrp");
return -1;
}
judge();
return 0;
}
我會在後臺運行,作爲我的厚望,如輸出:
todd911 @虛-machine:./ a.out的&
[1] 15894
todd911 @虛擬機:〜$背景
前景
但事實上,它像:
todd911 @虛擬機:./ a.out的&
[1] 15894
todd911 @虛擬機:〜 $背景
前景
退出
最後,終端自動退出,有人知道原因嗎?
它在主 – niko
結束時返回0,問題是我的終端自動退出,就像我在shell中執行exit命令一樣。 – TODD911
您可能會通過在其背後操縱fg/bg進程組來混淆您的shell。 – ninjalj