我正在C中使用openpty創建一個pty,並在master/parent和slave/child之間共享它。孩子可以fork/exec並將文件描述符傳遞給其他程序。我想給孩子注射命令,但是如果我立即通過,他們會迷路。我如何從父進程告訴別人有人阻止從stdin輸入?我碰巧在SUSE 10上工作,但我更喜歡獨立於發行版的解決方案。確定一個pty是否有編程要求輸入
編輯:這個問題的答案對我來說仍然很有趣,但可能與問題無關。我會在稍後談談。
代碼的簡化版本。將使用script源代碼(部分標題可能需要被固定),和大
for (;;) {
前添加線
char* command = "echo 'Hello World!'\r\n", written = 0;
(void)write(master, command, strlen(command));
(void)write(STDOUT_FILENO, "Sent command\r\n", 14);
主要是
。
我一直在執行從腳本CSH,但後來我發現,腳本命令被傾倒一些垃圾(如六看)
^[[>0;115;0c
到父母的標準輸入。如果我執行一個bash shell,那麼沒有任何東西會被拋棄,程序會很好地注入命令。
我仍然對被問的問題的答案感到好奇,但顯然與我的問題不再相關,因爲還有其他事情正在進行。如果任何人知道如何看到一個pty是否正在閱讀,可隨時回答。
如果兩者都是我建造n房子,那麼你可以同步它們。可能是通過'signals'?還發布你的代碼。 – tuxuday 2012-08-01 07:59:59