Windows批处理 调用程序后 不等待子进程 父进程继续执行命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows批处理 调用程序后 不等待子进程 父进程继续执行命令相关的知识,希望对你有一定的参考价值。

从DOS过来的老鸟应该都知道批处理,这个功能在WINDOWS中仍然保留着。批处理 说白了就是把一系列DOS命令写在一个文本文件里,然后把这个文件命名为XXX.bat(WINXP以后的系统也可以命名为*.cmd),然后运行它就可 以一次执行一系列命令和程序了,当然也包括WINDOWS下的程序。
昨天处理一个问题时需要写一个批处理,批处理的前面运行了几个DOS命令,最后调用一 个WINDOWS程序。可问题是,调用的WINDOWS程序打开后,CMD命令提示符窗口不会关闭,而是要等待这个WINDOWS程序关闭后它才会关闭。 回想以前DOS下的批处理,都是执行一个程序,然后等待这个程序执行完毕后才会执行下一个程序,因为DOS是单任务操作系统嘛。但WINDOWS里有没有 什么方法让批处理调用程序后不用等待程序结束而继续执行后面的命令呢?网上搜了一下,也没找出个结果。自己又研究了半天,终于解决了。解决的关键就是使用 了一个不太常用的命令:start
一开始我的批处理是这么写的(“/”和后面的内容是注释):
@echo off                /这是不让CMD窗口中显示运行的什么命令 
DOS命令                   /这是一系列DOS命令,用DOS命令代替 
abc                      /最后要调用的WINDOWS程序文件名为abc.exe 
echo "ok"                /输出“OK” 
ping /n 5 127.1 >nul           /延时 5S 
exit 

问题就是这么写死活都无法在运行abc.exe之后自动关闭CMD窗口。后来我终于想起来WINDOWS的命令提符中有一个start命令,心想使用它也许批处理就不会等待abc.exe执行完毕了。于是把批处理改为:
@echo off           /这是不让CMD窗口中显示运行的什么命令 
DOS命令             /这是一系列DOS命令,用DOS命令代替 
start abc           /最后要调用的WINDOWS程序文件名为abc.exe 
echo "ok"           /输出“OK” 
ping /n 5 127.1 >nul       /延时 5S 
exit 

果然,abc.exe运行之后,这个批处理就继续执行后面的exit命令,从而自己退出了。原来,使用start调用的程序,批处理是不会等待程序运行结束的。遇到与我相同问题的朋友,不妨一试。

参考:http://www.cnblogs.com/yukaizhao/archive/2010/07/03/1770659.html

以上是关于Windows批处理 调用程序后 不等待子进程 父进程继续执行命令的主要内容,如果未能解决你的问题,请参考以下文章

fork 与 vfork

子进程的异步等待方式

supervisor启动一个子进程后等待几秒再启动其他子进程

Android -- Init进程对信号的处理流程

linux下system函数调用shell命令后,怎样让主进程等子进程返回后,接着执行

匿名管道:当子进程被杀死时,父进程中的 ReadFile 继续等待