我正在寻找一种方法来获取从C++程序中运行命令的输出.我已经看过使用system()函数,但这只会执行一个命令.这是我正在寻找的一个例子:
std::string result = system("./some_command");
Run Code Online (Sandbox Code Playgroud)
我需要运行一个任意命令并获取其输出.我看过Boost.org,但我找不到任何可以满足我需要的东西.
我永远不会记得我是怎么做的,因为它对我来说很少见.但是在C或C++中,从标准输入读取字符而不等待换行符的最佳方法是什么(按回车键).
理想情况下,它也不会将输入字符回显到屏幕上.我只想捕捉击键而不影响控制台屏幕.
可能重复:
如何从C运行外部程序并解析其输出?
我想在linux中运行一个命令,并返回它输出的文本,但我不希望这个文本打印到屏幕上.有没有比制作临时文件更优雅的方式?
我正试图通过system()- 例如,启动外部应用程序system("ls").我希望捕获它的输出,因此我可以将它发送到另一个函数进行进一步处理.在C/C++中最好的方法是什么?
在Linux 3.0/C++下:
我想要一个执行以下操作的函数:
string f(string s)
{
string r = system("foo < s");
return r;
}
Run Code Online (Sandbox Code Playgroud)
显然上面的方法不起作用,但你明白了.我有一个字符串s,我想传递作为应用程序"foo"的子进程执行的标准输入,然后我想将其标准输出记录到字符串r然后返回它.
我应该使用linux系统调用或posix函数的组合?
我正在使用Ubuntu,我想阅读其内核的版本.我在/ proc /中找到了一个名为version的文件,它记录了当前内核的版本.
如果我不想读取文件,还有其他方法,比如C中的内置函数,我可以读取C中的版本吗?
谢谢
有没有更好的方法呢?
int numOfCPU;
system("grep -c ^processor /proc/cpuinfo >> /tmp/cpuinfo");
FILE *fp = fopen("/tmp/cpuinfo", "r");
fscanf(fp, "%d", &numOfCPU);
fclose(fp);
system("rm /tmp/cpuinfo");
Run Code Online (Sandbox Code Playgroud)
我不想创建中间文件然后将其删除.
编辑:
它不是从文件中读取.命令可以是"ls"或"echo'Hello world'"
可能重复:
如何从C运行外部程序并解析其输出?
嗨,
请问有人请告诉我们在执行system()函数时如何捕获结果?
实际上我写了一个显示机器IP地址的c ++程序,名为"ipdisp",我希望当服务器程序执行这个ipdisp程序时,服务器会占用显示IP地址.那么,这可能吗?如果有,怎么样?
谢谢你的回复
我正在执行一个system()函数,它返回一个文件名.现在我不想在屏幕上显示输出(即文件名)或管道到新文件.我只想将它存储在一个变量中.那可能吗?如果是这样,怎么样?谢谢
我需要编写一个C程序来检查其他程序的输出.它应该基本上像这样工作:
./otherprogram|./myprogram
但我找不到如何从stdout(或管道)逐行读取.然后将所有这些写入stdout.
c ×9
c++ ×6
system ×4
linux ×2
posix ×2
stdout ×2
unix ×2
glibc ×1
inputstream ×1
io ×1
linux-kernel ×1
pipe ×1
process ×1
return-value ×1
sockets ×1