2014-09-03 48 views
0

我一直在試圖寫它運行一個命令如何在後臺運行的程序中傳遞stdinput?

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

此命令可以通過在shell中鍵入q所退出的shell腳本。

我可以將參數傳遞給腳本,但是如何從腳本內或通過其他腳本自動執行。 我可以從腳本中殺死這個youtube-dl進程,但是我不想這樣做,因爲它會影響commad執行。

請告訴我如何確保q由youtube-dl進程從另一個腳本或從同一腳本中接收。

+0

這取決於'youtube-dl'是直接從終端讀取還是從標準輸入讀取。我不知道是哪種情況。 – chepner 2014-09-03 15:08:18

+0

它從標準輸入 – GP007 2014-09-03 15:30:57

回答

0

您可以從命名管道重定向標準輸入:

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 
+0

閱讀感謝@chepner它爲我工作.i已經想出了這件事情,我們需要創建一個管道,然後將其傳遞給腳本。 – GP007 2014-09-05 05:43:25

0

我們可能不需要做這一切。我們將終端打印輸出導出到一個文件並在後臺運行整個事情。

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

您可能要刪除您的輸出。