Я пишу программу, которая суммирует терминал, я написал еще одну фиктивную програму, которая принимает только входные данные и распечатывает их. фиктивная прога:контекстный переключатель между двумя процессами в linux
int main(int argc, char *argv[]) {
char text[128] = {0};
while(1){
fgets (text, 128, stdin);
printf("%s\n", text);
}
return 0;
}
В моей основной программе я запускаю фиктивную программу с помощью fork-> exec. мой вопрос в том, какой из них получает вход от пользователя? есть ли переключатель контекста между ними, поэтому один процесс принимает вход за раз, или процесс отца принимает все входные данные, если я не позвоню.
EDIT: вход не будет использоваться совместно.
, тогда я хочу вызвать дочерний процесс на передний план, я пытаюсь использовать 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 по какой-то причине и как PGID до setpgrp и после того, как одно и то же.
Вы должны * прочитать руководство * для 'fork' и' exec' и выяснить, что происходит с открытыми файловыми дескрипторами, такими как стандартный ввод. –
привет, моя проблема заключается не в fork exec, а в предотвращении и разрешении ввода для нового процесса. –
Ваш вопрос в конечном счете о том, что происходит со стандартным вводом. Это задокументировано как часть поведения как 'fork', так и' exec'. –