2013-07-30 106 views
2

我目前正在設計一個腳本,它最終將控制一系列能夠從主腳本啓動和停止它們的遊戲。發送'ESC'或信號給子程序

但是,其中一個遊戲只能按下'ESC'鍵才能正常停止。我怎樣才能把它解釋成信號或類似的東西?

*遊戲以gamename.Popen()開始,然後通常通過發送SIGINT或SIGQUIT完成停止。

想法?

+0

http://stackoverflow.com/questions/5714072/simulate-keystroke-in-linux-with-python –

回答

1

但是,其中一個遊戲只能按下'ESC'鍵才能正常停止。我怎樣才能把它解釋成信號或類似的東西?

你不行。您試圖掩蓋子進程中的設計錯誤,我懷疑它會抓取它自己的輸入,並且不會使用stdin,這會允許您發送一個Esc。讓我知道這個假設是否不正確。

您是否嘗試過在此遊戲中使用SIGTERM?這是更傳統的「清理你自己和退出」信號,我可以想象有人編寫代碼來優雅地處理SIGTERM,同時使SIGINT和SIGQUIT保持其默認值。

+0

我同意你說的話。遊戲確實有設計問題,我已經斷定我會以SIGTERM結束腳本,他們將需要更新他們的遊戲。 – Skowt

0

如果您通過使用PIPE發送擊鍵來控制它們,那麼發送chr(0x1b)應該能夠做到。