我正在编写一个 Linux 应用程序。如果我调用fork()
然后运行一个接受控制台输入的应用程序会发生什么?考虑下面的代码:
int process_id = fork();
if (process_id != 0) {
/* this is the parent process */
error = execv("../my_other_app", "parameter1", NULL);
if (error < 0) {
printf("error!");
}
} else {
/* this is the child process. Wait for my_other_app to set up */
sleep(3);
/* now continue */
}
printf("########## press ENTER to stop ##########\n");
getchar();
exit(0);
问题是,my_other_app
还有一个按 ENTER 键来停止消息。那么当我getchar()
打电话时,哪个应用程序正在读取它?主应用程序还是my_other_app
我启动的应用程序execv
?
编辑:它通过测试my_other_app
优先于控制台出现。每次都会出现这种情况吗?有没有办法确保控制台由主进程拥有?