Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C/C+中读取/写入屏幕进程+;_C++_C_Gnu Screen - Fatal编程技术网

C++ 在C/C+中读取/写入屏幕进程+;

C++ 在C/C+中读取/写入屏幕进程+;,c++,c,gnu-screen,C++,C,Gnu Screen,我想知道如何在C/C++中连接到一个屏幕进程,我经常希望一个C程序监听到该屏幕窗口的输出,并对该输出做出反应,同时向该会话上运行的程序发送一些输入。我只是不确定该如何连接到屏幕会话,我在搜索时没有发现任何有用的东西。完全按照您的意愿进行操作。screen期望在终端设备内运行,因此如果(我假设您在linux上)希望以编程方式创建它,您必须使用posix_openpt()设置终端伪设备,使用grantpt()/unlockt()设置从设备,分叉,在子进程中打开从pty,将其复制到stdin/out/

我想知道如何在C/C++中连接到一个屏幕进程,我经常希望一个C程序监听到该屏幕窗口的输出,并对该输出做出反应,同时向该会话上运行的程序发送一些输入。我只是不确定该如何连接到屏幕会话,我在搜索时没有发现任何有用的东西。

完全按照您的意愿进行操作。screen期望在终端设备内运行,因此如果(我假设您在linux上)希望以编程方式创建它,您必须使用
posix_openpt()
设置终端伪设备,使用
grantpt()/unlockt()
设置从设备,分叉,在子进程中打开从pty,将其复制到stdin/out/err,最后使用适当的选项执行屏幕。现在,您可以发送命令并接收终端通知,就像您是终端仿真器一样。查看手册页中的
pty(7)
了解更多详细信息;我很确定我错过了一些


这是一个巨大的混乱,几乎可以肯定的是,对于你正在尝试做的事情来说,它过于复杂了。那么:你到底想做什么?

屏幕
和该窗口上的客户端之间附加程序公平吗?或者你真的想在
screen
启动该客户端后进行连接吗?我希望能够在screen启动后进行连接。我有一个游戏服务器,我想读取和写入该服务器,因为它在服务器运行以执行服务器命令时接受stdin的命令。因此,基本上我需要能够读取正在运行的服务器的stdout,并且能够向该服务器的stdin发送消息。您的“服务器”不应该是一个实际的“服务器”而不是一个在标准I/O上运行的控制台程序吗?它不需要网络输入吗?这听起来像是您试图使用screen来后台化一些本身不是后台程序的东西。还有更好的解决方案。它是一个真正的服务器,就像我说的,它是一个游戏服务器,所以当人们在聊天时,它会输出到控制台,你也可以直接从控制台输入特殊的服务器命令,也就是说,在聊天中向游戏世界发送服务器消息