子进程结束时如何返回指定的值给父进程

父进程在启动子进程时向子进程传递参数这个很常见,那么子进程如何在结束时返回指定的值给父进程呢,这里我以几种常见的解释器为例做个简单的说明。

windows中最常用的脚本软件莫过于autohotkey了(后面我简称ahk),这里就以ahk程序为父进程,由它来调用其它程序(也就是子进程)。在ahk中要获取子进程的返回值可以使用runwait命令,这个命令在默认情况下会把子进程的返回值存储到ERRORLEVEL变量中。

如果子进程是cmd程序,那么使用exit退出程序并在exit后面跟一个常数或者变量即可返回这个常数或者变量的值给父进程,例如 exit 5 或者 exit %num%

但是cmd程序是在是太老了,功能严重不全,连想把命令的执行结果赋给变量都十分困难。所以推荐使用powershell程序,这个就强大多了,在powershell程序中返回常数给父进程的方法和cmd程序一样,例如exit 5 。但是返回变量给父进程就和cmd程序略有区别,因为powershell是面向对象的,所以变量代表的如果是对象的话,就不能直接返回这个变量,而是要返回这个变量的属性才行。例如有个temp变量,存储了 Measure-Object –Line 命令输出的对象,那么如果你就可以执行 exit $temp.Lines 来返回对象的行数属性给父进程。

当然,我这边举例使用的父进程是ahk程序,无法接受对象作为返回值,也许其它程序作为父进程时(例如powershell作为父进程)可以直接返回一个对象吧。

此条目发表在 ., 语言与设计 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>