我正在编写一个汇总终端的程序,我编写了另一个只接受输入并将其打印出来的虚拟程序。虚拟编:
int main(int argc, char *argv[]) {
char text[128] = {0};
while(1){
fgets (text, 128, stdin);
printf("%s\n", text);
}
return 0;
}
在我的主程序中,我使用 fork->exec 运行虚拟程序。我的问题是其中哪一个从用户那里得到输入?它们之间是否存在上下文切换,因此一个进程一次获取输入,否则父进程将获取所有输入,除非我调用等待。
编辑:输入不会被共享。
然后我想将子进程调用到前台我尝试使用 tcsetpgrp 但没有成功。我执行以下操作:
if((son = fork())==0){//son process
}else{//father
printf("the old group id is:%d\n", getpgid(son));
setpgid(son,son);
k = printf("the new group id is:%d\n",getpgid(son));
j = tcgetpgrp(0, getpgid(son))
}
j 出于某种原因设置为 25,并且 setpgrp 之前和之后的 pgid 都是相同的。