所以我正在编写一个在程序中运行命令的C ++程序。每当我运行命令时,它会在输出结束时输出0。例如:
The random int I was thinking of was 130
它只应该输出The random int I was thinking of was 13
,但它仍然在最后输出0。这是我运行命令的代码:
printf("Running file: %s\n", fileName);
if(!exists(fileName))
{
printf("That file does not exist.\n");
return;
}
char buffer [7+strlen(fileName)];
int n;
n = sprintf(buffer, "php -f %s", fileName);
cout << system(buffer) << endl;
我不认为它与php
命令有任何关系,因为每当我输入我的终端php -f <filenamehere>
时,它都会输出The random int I was thinking of was 13
。我想不出别的什么。
答案 0 :(得分:0)
system
函数返回执行的“结果”,成功为0,各种类型失败的其他值(包括可执行文件本身的结果,如果适用)。
您正在使用cout
打印该值,这就是打印0
的原因 - 这就是打印0
的原因。
你可能想做这样的事情:
int result = system(...);
if (result != 0)
{
cout << "system returned " << result << " which means it failed..." << endl;
}
请注意,使用system
运行的任何内容的输出都将转到stdout
,它不会返回到应用程序本身,只会打印到控制台[或stdout
的任何位置正在进行中。
答案 1 :(得分:0)
system命令仅返回执行状态。
要捕获并打印输出,请参阅此链接中的选项
How to execute a command and get output of command within C++ using POSIX?