Перенаправление ввода в поток - PullRequest
1 голос
/ 25 мая 2020

У меня действительно простой код, в котором я разветвляюсь один раз, а дочерний узел мутирует с помощью execlp, а родительский продолжает выполнять свою работу. Ничего особенного.

Я хочу перенаправить весь стандартный ввод в поток execlp-ed, а не в родительский.

Итак, если я выполню

echo "hi" | ./parent.o

это может быть записано с помощью string s; cin >> s; в some_command.cpp (но не в родительском. cpp!).

Текущая ситуация (parent. cpp):

int main()
{
  int pid = fork();
  if (pid < 0) {
    std::cout << "Something crashed" << std::endl;
    exit(-1);    
  } else if (pid == 0) {
    // We are the forked child
    execlp("/some/command", "some_command", NULL);
    std::cout << "Execlp failed" << std::endl;
    exit(127);
  }
  // We are the parent, and we keep running
  // More stuff...
}

Прямо сейчас some_command. cpp содержит только пустой int main() { }.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...