2010-02-12 81 views
0
#!/usr/bin/perl 
$sim = "multiq"; 
`make SCHED=$sim`; 
`script > scripter`; 
`echo hi`; 
print pack("c", 04); 
~ 

該腳本在調用腳本時掛起。不知道如何讓perl腳本繼續運行。如何從Perl運行並結束script()linux命令?

+0

如果端口這段代碼恰好一個shell腳本是什麼? – mob 2010-02-12 19:55:04

+0

'print pack(「c」,04)'?你是這麼試圖發送'^ D'到劇本嗎? – mob 2010-02-12 19:56:25

回答

5

請注意反引號(‘‘)運行一個命令並返回其輸出。如果你要忽略輸出,使用system

system("make SCHED=$sim") == 0 or die "$0: make exited " . ($? >> 8) 

如果你要發射後不管的程序(即在後臺啓動它,而不用擔心它完成的時候),你可以使用

system("script >scripter &"); 
1

如果你想讓它全部交互,你必須在一個子進程中運行它。請參閱perlipc以瞭解處理該問題的各種方法。

1

你可能想看看Expect控制交互式會話

0

反引號(「「)運行一個命令,返回其output.So可以存儲並進一步操縱它。如果你想忽略輸出,使用system()。另外,如果您想在後臺運行任何進程,請在進程的前綴中使用&。例如,你想使用腳本來啓動GIMP簡單地說

system("gimp &");