您当前的位置:首页 > 计算机 > 编程开发 > C语言

怎样在一个程序执行期间运行另一个程序?

时间:01-03来源:作者:点击数:

正如你在20.10的例子中看到的那样,spawn()函数族允许在一个程序中启动另一个程序,并在后者结束后返回到前者之中。有关spawn()函数的背景知识和例子(你只需把其中的_P_OVERLAY改为_P_WAIT) 请参见20.10。

然而,还有另外一种方法可以完成这项工作,即使用system()函数。system()函数与exec()或spawn()函数相似,但也不有同之处。除了挂起(而不是结束)当前程序去执行新程序外,system()还要启动COMMAND.COM命令翻译程序(或者其它任何运行在你的计算机上的命令翻译程序)。如果它找不到COMMAND.COM或类似的程序,那么它就不会去执行所要求的程序(这一点与exec()或spawn()函数不同)。下例是调用EDIT.COM打开一个文件的另一个程序版本,其中的文件名也来自该例的命令行:

# include <stdio.h>
# include <process.h>
# inclued <stdlib.h>
char argStr[255] ;
void
main(int argc, char **argv)
     int ret ;
      /* Have EDIT open a file called HELLO if no arg given */
      sprintf (argStr ,"EDIT %s", (argv[1] == NULL?"HELLO" :argyll3) ) ;
      /* Call the one with variable arguments and an environment */
      ret = sytem (argStr) ;
      printf("system() returned %d\n" ,ret) ;
}

与20.10中的例子一样(使用_P_WAIT),在system()调用后面的print{()语句会被执行,因为原来的程序只是被挂起而不是被终止。在每一种情况下,system()都会返回一个表示是否成功地运行了所指定的程序的值,而不会返回所指定的程序的返回值。 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门