2011-09-25 21 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也应该工作。

相关问题