我一直致力于从我的程序中启动多个线程,我希望每个线程都输出到各自的终端窗口(我已经以平铺模式弹出)。
它们不是炮弹,只是输出的终端窗口。
我正在用C编写ubuntu。我有它工作,但由于某种原因,几分钟之后就好像xterm显示缓冲区填满(彼此独立)并且它们停止显示新文本。旧文本仍然存在,线程在后台继续做他们的事情,但没有新的输出。
我已经尝试了所有我能找到的东西并且仍然感到困惑。
我似乎无法找到可能的:
以下是现在的情况(也请随意指出我正在做的事情多余或错误;在这种情况下,N.B。便携性不是很重要)。我省略了错误检查。我希望我不必使用system(),但这是我可以使它工作的唯一方法(posix_spawn也没有工作)。此代码在每个线程中运行(未显示切片效果,但它通过共享内存和xterm命令行上的一些其他参数进行管理):
char buf_xt[256]; // Used along with sprinf() and write() to output to xterm
char *pSptyName;
int xterm_fd1; // File descriptor for xterm
xterm_fd1 = posix_openpt(O_RDWR | O_NONBLOCK | O_NOCTTY);
pSptyName = ptsname(xterm_fd1);
sprintf(buf_xt, "xterm -S%s/%d &", pSptyName, xterm_fd1);
system(buf_xt);
我像这样输出到xterm:
sprintf(buf_xt, “Writing to xterm.\n”);
write(xterm_fd1, buf_xt, strlen(buf_xt));
我希望也许来自诅咒的newterm()可以做到这一点(也可以接受其他想法),但我无法在任何地方找到任何有用的文献或例子,所以我希望这里有人可以提供一些真实的除了RTFM之外的其他信息(我已经有了,但具体的实现将有助于填补文档中的漏洞)。
作为旁注,当我关闭程序时,我无法单独关闭xterm实例。我必须再次system()
致电killall xterm
,因此对此的任何想法也将不胜感激。
谢谢
答案 0 :(得分:0)
在ncurses源代码中,可以编译getResource(String path)
程序(test / ditto.c)以生成多个xterms,例如,将其作为
ditto
用这些标题创建两个xterms(除了你开始的屏幕之外)。
使用ditto first second
。为此,您必须使用newterm
选项配置ncurses。这并没有解决关闭xterms的问题。