【发布时间】:2009-12-21 00:16:31
【问题描述】:
我正在为我的 Sheevaplug(运行默认的 Ubuntu 安装)编写一个 cgi-bin 程序,它在浏览器页面中显示一个 shell。它是一个单独的 C 程序,放置在 cgi-bin 文件夹中并在浏览器中查看。它会自动启动一个守护进程,并且该守护进程会派生一个 shell 实例。 cgi-bin 通过共享内存块与守护进程通信,守护进程通过将其 stdin/stdout 重定向到 shell 的 stdout/stdin 来与 shell 通信。当您离开页面时,它会自动关闭守护进程。
如果我使用“/bin/sh”启动它并且我一次从浏览器向它发送整个命令行,它就可以工作。但是使用这种设计,它不是交互式的。
所以我将其更改为一次发送一个字符到“/bin/sh”并添加“-i”以便 shell 以交互模式运行。
shell 启动时显示错误“无法访问 TTY,作业控制已关闭。”
当它准备好输入并且似乎可以工作时,它会显示“$”,但是向它发送删除字符只会混淆它并且它不能正确处理删除。我不确定它是否处于交互模式。当我输入“su root”时,我收到错误“必须从终端运行”。
任何想法我做错了什么?
PS:当我完成后,它将在 GPL 下发布。
【问题讨论】: