调用 forkpty 时 X 抛出错误。 (C++)
Posted
技术标签:
【中文标题】调用 forkpty 时 X 抛出错误。 (C++)【英文标题】:X throws out errors when forkpty is called. (C++) 【发布时间】:2010-01-30 20:52:23 【问题描述】:当我的程序到达这一行时:
pid_t nPid = forkpty( &m_nMasterFD, NULL, NULL, NULL );
输出这个:
X Error: BadIDChoice (invalid resource ID chosen for this connection) 14
Extension: 148 (RENDER)
Minor opcode: 17 (RenderCreateGlyphSet)
Resource id: 0x3600002
<unknown>: Fatal IO error 4 (Interrupted system call) on X server :0.0.
然后终止。如您所见,我正在尝试创建一个 pty 来运行东西,但它不起作用。
另外,有没有办法在类中调用forkpty()
? (这两种方法我都试过了,但都没有成功。)
我在 Ubuntu 9.10 上使用 QT C++ 编程。
编辑:Here's 问题的链接以及最终对我有用的代码。
【问题讨论】:
【参考方案1】:forkpty() 分叉你的进程。您需要首先关闭文件描述符,尤其是在您的子进程中与 X 服务器的连接。这意味着您可能无法使用 forkpty ,但必须使用 openpty()、fork()、关闭子进程中的文件描述符、logintty/()
【讨论】:
这不是O_CLOEXEC
的用途吗?
如果你 exec() 一个新程序,是的。在这种情况下,只有 fork()。
哦。不知怎的,我以为forkpty()
里面有一个最终的exec
,但不,当然不是……以上是关于调用 forkpty 时 X 抛出错误。 (C++)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Remote-SSH 修复 VS Code 错误:“终端进程无法启动:启动期间发生本机异常(forkpty(3)失败。)。”?
从 C# 调用 C++ dll 并抛出 SEHException
c++ 中的错误:“在抛出 'std::length_error'what() 的实例后调用终止:basic_string::_M_replace_aux”