Чтение с клавиатуры после системного вызова exec () - PullRequest
0 голосов
/ 22 февраля 2019

Предположим, что программа выглядит следующим образом:

/* just a snippet */
int fd = open("file.txt",O_RDONLY);
pid_t p = fork();
if(p<0)
{
  perror("forking error");
  exit(0);
}
else if(p>0)
{
  /* code part for parent*/
}
else //child
{
  dup2(fd,0);
  char* arg[1] = {NULL};
  execv("Process_name",arg);
}

Теперь внутри дочернего процесса, если я выполню scanf (), он будет читать из file.txt. Предположим, я хочу прочитать как с клавиатуры, так и из файла после системного вызова execv ().Как мне вернуть свой стандартный дескриптор входного файла?

PS Фрагмент кода предназначен только для примера, на самом деле нет никакой цели использовать dup2 перед вызовом execv ().Я показал это только для того, чтобы показать тип проблемы, с которой я столкнулся при написании кода для TCP scokets.

...