题
如果我从命令提示符 (c:\windows\system32\cmd.exe) 运行 Perl 脚本,如何在脚本执行完成后退出命令提示符。
我试过 system("exit 0")
在 Perl 脚本内部,但不会从运行 Perl 脚本的位置退出 cmd 提示符 shell。
我也尝试过 exit;
Perl 脚本中的命令,但这也不起作用。
解决方案
如果你开始的命令shell只运行perl脚本,通过Arkaitz希门尼斯的答案应该工作(我投了赞成票。)
如果没有,你可以创建一个批处理文件一样runmyscript.bat
,与内容:
@echo off
perl myscript.pl
exit
在exit
将结束shell会话(和作为副作用,结束批处理脚本本身。)
其他提示
尝试使用这样的命令行运行Perl脚本:
perl script.pl & exit
第一个完成后的符号将启动第二命令。还可以使用&&
执行仅当首次成功(错误码为0)的第二命令。
你有没有尝试过 cmd.exe /C perl yourscript.pl
?
根据 cmd.exe /?
/C
执行字符串指定的命令,然后终止。
可以在新窗口中使用 START DOS命令启动程序。如果调用与/B
则创建额外的窗口。然后,你可以调用exit关闭当前窗口。
那会做的伎俩?
可以将信号从发送的Perl到母体壳:
kill(9,$PARENT_PID);`
不幸的是,getppid()
功能并不在Perl实现在Windows上,所以你必须通过一些其他手段来找出父shell的PID。此外,信号#9可能不是最好的选择。
不隶属于 StackOverflow