C ++系统命令结束时输出0

时间:2016-02-21 17:53:11

标签: c++ command system

所以我正在编写一个在程序中运行命令的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。我想不出别的什么。

2 个答案:

答案 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?