Поток ввода в программу СИ?

#include <stdlib.h>

int main(int argc, char const *argv[]) {
  system("/bin/sh");
  return 0;
}

Если просто запустить программу откроется bash, если создать файл echo "ls" > test и запустить программу

cat test | ./a.out

То отработает ls и программа закроется, почему так происходит, а не дальше ожидается ввод команд в bash?

Если вот так то работает:

cat test - | ./a.out

Помогите разобраться с логикой конвейера?


Ответы (1 шт):

Автор решения: user7860670

bash будет работать пока не закроется поток ввода. cat test отправляет в стандартный ввод содержимое файла и закрывает его. А cat test - продолжает после файла перенаправлять свой стандартный ввод в стандартный ввод следующего процесса.

→ Ссылка