Как передать stdinput в программу, работающую в фоновом режиме?

Я пытался написать сценарий оболочки, который запускает команду

youtube-dl -o C:\Users\3435\Desktop\35.mp4  http://www.youtube.com/watch?v=I1rxfwFxB8M

Эту команду можно закрыть, набрав q в оболочке.

Я могу передать параметр в скрипт, но как это сделать автоматически из скрипта или через другой скрипт. Я могу убить этот процесс youtube-dl из скрипта, но я не хочу этого делать, так как это влияет на выполнение команды.

Пожалуйста, скажите мне, как убедиться, что процесс youtube-dl получает q либо из другого скрипта, либо из того же скрипта.


person GP007    schedule 03.09.2014    source источник
comment
Это зависит от того, читается ли youtube-dl из терминала напрямую или из стандартного ввода. Я не знаю, в чем дело.   -  person chepner    schedule 03.09.2014
comment
его чтение со стандартного ввода   -  person GP007    schedule 03.09.2014


Ответы (2)


Вы можете перенаправить его стандартный ввод из именованного канала:

mkfifo ydl-input
youtube-dl -o 'C:\Users\3435\Desktop\35.mp4' \
           'http://www.youtube.com/watch?v=I1rxfwFxB8M' \
           < ydl-input

затем напишите «q» в именованный канал в любое время позже.

echo q > ydl-input
person chepner    schedule 03.09.2014
comment
спасибо @chepner, у меня это работает. я понял, что нам нужно создать канал, а затем передать его в скрипт. - person GP007; 05.09.2014

Возможно, нам не нужно делать все это. Мы экспортируем вывод терминала на печать в файл и запускаем все это в фоновом режиме.

youtube-dl -o ~/Desktop/35.mp4  http://www.youtube.com/watch?v=I1rxfwFxB8M > tmp.txt 2>&1 &

Вы можете удалить свои результаты.

person PhysicalChemist    schedule 03.09.2014