В дополнение к управляемой оболочкой хитрости других ответов:
В некоторых системах Unix есть специальные файлы /dev/stdin
, и вы можете запустить, например,
otherprogram | program /dev/stdin
Другие (например, linux) могут иметь /proc/self/fd/0
, который можно использовать таким же образом.
Оба из них завершатся с ошибкой, если stdin
будет закрыт перед открытием файла в командной строке, но это будет крайне редким явлением. Гораздо более вероятно, что он потерпит неудачу, потому что программа ожидает seek()
файл, который не работает на каналах.
Если ваша оболочка zsh, у вас есть другая опция.
program =(otherprogram)
Что сделает все возможное для настройки временного входного файла и удаления его после завершения program
. Это будет работать с seek()
, но может временно занять больше места.