【发布时间】:2019-04-22 03:39:47
【问题描述】:
我有一个 c++ 程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fstream>
#include <iostream>
#include <fcntl.h>
using namespace std;
int main (int argc, const char * argv[]) {
// system("script /dev/null");
FILE *pout;
pout = popen("screen tty.MobileRobot-RNI-SPP", "w");
fprintf(pout,"hello");
return 0;
}
问题是它会输出“必须连接到终端”。
然后该命令挂起。取消注释该 system() 调用不会导致任何事情发生。我不确定我是否做得正确。有任何想法吗?谢谢
【问题讨论】:
-
在一般情况下,您需要将该进程的
stdin管道连接到实际终端,尽管可能有一种特定于屏幕的方式来执行此操作。 -
在另一个程序中调用
screen似乎不寻常。你能解释一下你真正想要做什么吗? -
这似乎是XY problem。您要解决的实际问题是什么?
-
不相关,但你说“我有一个 c++ 程序”.. 对 我 来说,你似乎有一个 C 程序。您发布的代码没有任何 C++(
using namespace位除外,但这无关紧要)。 -
@Brian 我需要从 tty 端口发送数据,但由于某些莫名其妙的原因,终端和 c++ 都无法正常工作。此外,屏幕工作。
标签: c++ linux macos popen gnu-screen