如何判断对system()的调用是否已退出?

时间:2014-03-03 06:11:48

标签: c

在CI中使用system()编写了一个代码来启动另一个应用程序,例如abc.exe。现在我怎么知道abc.exe是否已经退出,当它已经退出时,我想运行另一个应用程序,比如说xyz.exe。

3 个答案:

答案 0 :(得分:2)

system()是同步的,即完成后你只需要进入代码的下一条指令,所以基本上它应该是:

 system("abc");
 system("xyz");

同样system返回已执行程序的退出状态,因此如果程序之间存在依赖关系并且xyz未成功执行abc则无法执行,则应检查ret状态abc

 if(system("abc") != -1 )
    system("xyz");

答案 1 :(得分:1)

在第一个system(之后调用应用程序。 System()是同步的。

system("abc");
system("xyz");

像拟人化的通知一样,

  

同步意味着对系统(“abc”)的调用只会在之后返回   “abc”已经完成。

您可以使用返回值验证执行情况。通常,如果程序当前未执行,则返回非零值。

  

在许多系统中,0用于表示命令是   成功执行和其他值以指示某种错误。

     

如果command是空指针,则该函数返回非零值   case命令处理器可用,如果不是,则为零值。   如果command不是空指针,则返回的值取决于   系统和库实现,但通常是预期的   被调用命令返回的状态代码(如果支持)。

答案 2 :(得分:0)

您可以通过查看系统返回给您的内容来检查系统是否正确执行。如果成功执行,返回值将为零(空指针)。

来自C ++参考:

  

如果command是空指针,则该函数在命令处理器可用时返回非零值,如果不是则返回零值。

     

如果command不是空指针,则返回的值取决于系统和库实现,但如果支持,通常应该是被调用命令返回的状态代码。