可能重复:
如何从C运行外部程序并解析其输出?
我想在linux中运行一个命令,并返回它输出的文本,但我不希望这个文本打印到屏幕上.有没有比制作临时文件更优雅的方式?
我有一个实用程序可以输出游戏所需的文件列表.如何在C程序中运行该实用程序并获取其输出,以便我可以在同一程序中对其执行操作?
更新:很好地呼吁缺乏信息.该实用程序吐出一系列字符串,这应该是完全可移植的Mac/Windows/Linux.请注意,我正在寻找一种程序化的方法来执行该实用程序并保留其输出(转到stdout).
我正试图通过system()- 例如,启动外部应用程序system("ls").我希望捕获它的输出,因此我可以将它发送到另一个函数进行进一步处理.在C/C++中最好的方法是什么?
Bash脚本非常有用,可以节省大量的编程时间.那么如何在C++程序中启动bash脚本呢?此外,如果你知道如何让用户成为超级用户也会很好.谢谢!
如何在c ++中执行命令行"asterisk -rx"reload""?请帮忙.我需要一个例子.我正在使用ubuntu服务器,我想从用户(在webservice内)执行此命令行.
需要帮助欣赏
我想从C++调用一个python脚本,并希望将此脚本生成的输出.csv文件重新用于C++.我在main()中试过这个:
std::string filename = "/home/abc/xyz/script.py";
std::string command = "python ";
command += filename;
system(command.c_str());
Run Code Online (Sandbox Code Playgroud)
这会调用并执行python脚本.
的print在Python命令正在执行.调用脚本时,屏幕上会打印出一些内容.到现在为止还挺好.但是,它不是创建.csv文件(同一脚本的一部分).
示例:我有一个training.csv包含100个条目的文件.我调用了Python脚本,对脚本几乎没有任何更改,因此training.csv文件现在应该只包含50个条目而不是100个.它被覆盖了.但是,没有这样的事情发生.脚本中的其他命令(print等)工作正常.
该training.csv文件是用C++通常使用来读取fstream和getline.
知道怎么做(使用Linux)吗?
我正试图用来popen()捕捉一个电话的stderr,但当然它似乎并没有这样做.有任何想法吗?
我的代码看起来或多或少像这样:
popen("nedit", "r");
Run Code Online (Sandbox Code Playgroud)
但是我在屏幕上得到了关于非utf8的所有垃圾......
好的,我的问题是这个.假设我有一个简单的C++代码:
#include <iostream>
using namespace std;
int main(){
cout << "Hello World" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在说我有这个程序,我想在我的程序中运行,称之为prog.在终端中运行此操作可以通过以下方式完成:
./prog
Run Code Online (Sandbox Code Playgroud)
有没有办法从我简单的C++程序中做到这一点?例如
#include <iostream>
using namespace std;
int main(){
./prog ??
cout << "Hello World" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何反馈都非常有必要.
考虑将这个小程序编译为 application.exe
#include <stdio.h>
int main()
{
char str[100];
printf ("Hello, please type something\n");
scanf("%[^\n]s", &str);
printf("you typed: %s\n", str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我使用此代码启动application.exe并获取其输出.
#include <stdio.h>
#include <iostream>
#include <stdexcept>
int main()
{
char buffer[128];
FILE* pipe = popen("application.exe", "r");
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != NULL)
printf(buffer);
}
pclose(pipe);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在我输入之前没有输出.然后获取两个输出行.我可以通过在第一个printf语句后添加此行来解决此问题.
fflush(stdout);
Run Code Online (Sandbox Code Playgroud)
然后在我按预期输入之前获取第一行.
但是,如何获取我无法修改且不能fflush()在"实时"中使用的应用程序的输出(在退出之前的意思)?.windows cmd是如何做到的?