我正在寻找一种方法来获取从C++程序中运行命令的输出.我已经看过使用system()函数,但这只会执行一个命令.这是我正在寻找的一个例子:
std::string result = system("./some_command");
Run Code Online (Sandbox Code Playgroud)
我需要运行一个任意命令并获取其输出.我看过Boost.org,但我找不到任何可以满足我需要的东西.
我有一个实用程序可以输出游戏所需的文件列表.如何在C程序中运行该实用程序并获取其输出,以便我可以在同一程序中对其执行操作?
更新:很好地呼吁缺乏信息.该实用程序吐出一系列字符串,这应该是完全可移植的Mac/Windows/Linux.请注意,我正在寻找一种程序化的方法来执行该实用程序并保留其输出(转到stdout).
在我的C++程序中,如何在运行时以编程方式检测符号是否已通过Linux上的"strip"gnu开发工具剥离?
我想要一个函数定义,如果被剥离则返回true,否则返回false.
在"main()"上使用dlsym()可以有效地检测到它吗?
使用system()或exec(),我可以获得任何执行命令,但是它们会将结果显示在控制台中.我想执行命令并提取输出并处理它,然后显示它.如何在Windows/DOS平台上实现此目的?
我需要编写一个C程序来检查其他程序的输出.它应该基本上像这样工作:
./otherprogram|./myprogram
但我找不到如何从stdout(或管道)逐行读取.然后将所有这些写入stdout.
基本上,我正在寻找能够复制以下Perl代码的东西:
my $fh = new FileHandle;
$fh->open("foo |");
while (<$fh>) {
# Do something with this line of data.
}
Run Code Online (Sandbox Code Playgroud)
这是在Linux的上下文中,因此特定于Windows的库将无济于事.我知道如何编写一个执行fork/exec/dup2的程序以及所有基本的shell类型爵士乐,但是有一些涉及终端的细节,我不喜欢乱搞(而且我没有副本) "在UNIX环境中的高级编程"或类似的参考方便),所以我希望有人已经解决了这个问题.
我知道这个功能:
system("myfile.sh")
Run Code Online (Sandbox Code Playgroud)
执行一个bash脚本.好的,但现在我想将输出重定向到我的程序以确保读数.例如脚本date.sh给我系统的日期,我希望在我的程序中用std :: cout << OUTPUTDATE; 可能吗?怎么样?