2011-09-25 84 views
1

我用這裏描述的方法制作了僞終端:http://lists.apple.com/archives/student-dev/2005/Mar/msg00019.html如何將終端切換到使用NSTask啓動的新進程子進程?

終端本身運行良好。無論如何,問題是終端不能切換到子進程。例如,我啓動bashNSTask,並且如果我在bash內執行ftp,它會自動停止。

ftp 
ftp 
ftp> 
[1]+ Stopped     ftp 
bash-3.2$ 

如果我嘗試繼續ftpfg,它悄然終止。

fg 
fg 
ftp 

bash-3.2$ 

fg 
fg 
bash: fg: current: no such job 
bash-3.2$ 

我認爲它需要更多的基礎設施(其中完成僞終端)切換控制子進程(我活動監控檢查這一點)。需要做什麼?

+0

什麼是平臺? IOS?蘋果電腦? Linux呢? –

+0

@DavidePiras我在Mac OS X 10.7上。 – Eonil

回答

1

我終於可以通過創建一個pty設備來做到這一點。要使程序像「終端」一樣運行,它必須在交互式終端中執行,並且需要僞終端設備。

不幸的是,AFAIK,NSTask不支持任何pty的能力,所以我不得不回到BSD層。

這裏是我當前的實現:https://github.com/eonil/PseudoTeletypewriter.Swift

sudo運作良好,我相信ssh也應該工作。