2012-10-30 17 views
4

我工作的一个嵌入式项目中,我需要在不工作方式类似于屏幕或TMUX外部依赖的程序。这两个程序不好,因为他们需要其他库。如何从终端分离程序并将其附加回去?

因为我只需要分离程序,能够登录并得到它回来时,我登录一遍,我不知道我是否可以写一个小程序。

你知道它调用(C语言),我需要做分离程序,并把它回来?

+0

使用nohup的在终端 – Omkant

+0

的nohup不给我用用程序壳交互的可能性,运行程序,为别人做。顺便说一下,编译是很痛苦的。如果我使用openembedded来创建系统,这很容易,但是这次我可以编译简单的二进制文件,因为我没有一个完整的交叉编译环境。 –

+0

你看过两者的源代码吗? –

回答

2

如果我正确理解你的要求,你可以在理论上使用termios的结构和ioctl来实现这一目标。

ioctl(0, TIOCNOTTY, NULL); 

分离并

ioctl(0, TIOCSCTTY, 1); 

附加回终端。但是,它并没有真正做到这一点。

下面的解决方案描述了一个不是很好,但实际工作中各地

tty demulsified

主要意图有附加程序到另一个终端,但我相信这是可以实现你的目标太的方式。

关于你的嵌入式平台的提,你也许能找到busybox

它编译的嵌入式Linux具有一个非常小的二进制文件,并包含最常用的Linux工具如盖蒂,stty的等一些帮助

+1

事实上,除非是非常专业化的程序,否则实际上拆卸和连接这样的终端通常不起作用。您可能需要像屏幕这样的方法,其中程序的主要部分在伪tty上运行,并且单独的进程或线程负责打开和关闭真实的tty并来回转发数据。 –

+0

我想我的意思几乎相同。我在描述api后写过上面的“它实际上并没有做这份工作”。我想,我引用的链接(我前一段时间使用的)与您所建议的内容类似。但是你的意见明确地澄清了这一点。谢谢 – fayyazkl