C System()控制标准输出

时间:2016-09-20 10:29:49

标签: c

我正在用C编写一个程序,在这个模型中:

//Block 1: Does a lot of operations, including debug messages

strcpy(call, "xdg-open ");
strcat(call, url);

system(call);

//Block 2: Does a lot of operations, including debug messages

在调用system()之后,看起来这个函数控制了stdout,而Block 2的调试消息不再打印,只有Block 1消息。

有人知道发生了什么,可能解决方案是什么?

1 个答案:

答案 0 :(得分:0)

当您使用int system(const char *command)函数执行其他应用程序时,您的应用程序将一直等到被调用的应用程序退出。这就是您没有看到Block 2的任何输出的原因。

您可以通过在end off命令中添加&来解决此问题,这将导致整个应用程序将作为不同的进程运行。所以你可以试试这个:

strcpy(call, "xdg-open ");
strcat(call, url);
strcat(call, " &");

system(call);

此外,您可能需要刷新stdout缓冲区,因此请在fflush(stdout)后调用Block 2