我正在用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消息。
有人知道发生了什么,可能解决方案是什么?
答案 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
。