我从命令promt启动Windows窗体应用程序,我需要获取windows窗体应用程序生成的退出代码.命令promt启动应用程序并立即返回.但是应用程序在后台执行.有没有办法获得退出代码?
亲切的问候
基督教.
我从waitpid得到错误的退出代码,我无法弄清楚原因.有人可以给我一些想法吗?
我在这做什么:
open2waitpid$?从子进程返回的内容总是以-1为单位返回.我检查VS调试器我的程序返回退出代码0. VS说这样的事情:
The program '[3256] Test.exe: Native' has exited with code 0 (0x0).
Run Code Online (Sandbox Code Playgroud)
我确保pids匹配.
有任何想法吗?
我有一个具有OUT参数的存储过程,表示错误代码.如果错误代码不是0,那么我引发错误
DECLARE
BEGIN
foo (err_code);
IF (err_code <> 0) THEN
raise_application_error(...);
END;
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好,但这是我的问题.
这段代码(如上所示)由sqlplus执行,sqlplus是从shell脚本调用的,它应该以0/not 0(作为sql脚本)退出.
#shell script
sqlplus ... @myscript
return $?
Run Code Online (Sandbox Code Playgroud)
执行raise_application_error时,控制权返回sqlplus.
sql>
Run Code Online (Sandbox Code Playgroud)
我想要的是一种退出shell的方法,没有sqlplus在$上返回0?
有什么想法吗?提前致谢.
首先让我解释一下我想要实现的目标.基本上有两个Perl脚本.一个是我用UI调用主脚本.运行此脚本的用户将看到他可以从菜单中调用的其他脚本的列表.此列表通过自定义配置文件加载.主脚本的目的是能够根据需要在将来添加其他脚本而不更改源,并作为cron作业(非交互模式)和用户需要(交互模式)运行.作为公司政策,我无权发布整个脚本,因此我将发布交互模式用户选择部分:
for($i = 0;$i < @{$conf}+1;$i++)
{
if($i % 2 == 1 || $i == 0)
{
next;
}
print $n++ . ". @{$conf}[$i-1]\n";
}
print "(health_check) ";
#
# User selection
#
my $in = <>;
chomp($in);
if($in =~ /[A-Za-z]/)
{
write_log("[*] Invalid Selection: $in");
print "\n<<<<<<<<<<<<>>>>>>>>>>>>>\n";
print ">>> Invalid Selection <<<\n";
print "<<<<<<<<<<<<>>>>>>>>>>>>>\n";
}
elsif($in == 0)
{
write_log("Exiting interactive mode");
last;
}
elsif(scalar($scripts[$in]))
{
write_log("[*] running: $scripts[$in]");
$rez = system('./' . "$scripts[$in]");
if($rez == 0b00)
{
printf("%s: …Run Code Online (Sandbox Code Playgroud) 编辑3
好的,所以看起来这可能不是安装程序问题.当我制作一个简单的批处理文件时:
exit /b 12
Run Code Online (Sandbox Code Playgroud)
并称之为
cmd /c test.cmd
echo %ERRORLEVEL%
Run Code Online (Sandbox Code Playgroud)
我在Windows Server 2003 R2上获得"12",在XP上获得"0".我以为我曾经多次测试过这个简单的测试用例,但显然没有.
所以,我已经更改了标签和标题,但是我在这里留下了其他信息,因为这里实际上有很多有用的东西与这个问题没有直接关系.
思考?
原来如下
我有一个用VBScript编写的自定义操作,而后者又调用Windows批处理文件(自定义操作基本上允许用户在安装时执行某些操作,以后也可以通过运行批处理文件来运行 - 这是一种方便).功能如下:
Function MainFunction
strCustomActionData = Session.Property("CustomActionData")
strSplit = Split(strCustomActionData, ";")
strInstallDir = strSplit(0)
strPostCopyAction = strSplit(1)
strScriptLocation = strInstallDir & "\MigrationMasterProcess.cmd"
strFullCommand = """" & strScriptLocation & """ " & strPostCopyAction
Set objShell = CreateObject("WScript.Shell")
Dim objExec
Set objExec = objShell.Exec(strFullCommand)
intReturnCode = objExec.ExitCode
Set objExec = Nothing
Set objShell = Nothing
WriteMessage "Return value: " & intReturnCode
' cf. …Run Code Online (Sandbox Code Playgroud) 在bash中,我想传播在别名中执行的特定命令的退出代码,以便别名调用本身将返回它(使用它退出).
想象一下下面的例子(请注意:命令没有意义,只是演示我面临的问题):
alias cda='cd \/a; exit_code=$?; echo "STATUS: $exit_code"; alias cdb='cd \/b'
cda && cdb
Run Code Online (Sandbox Code Playgroud)
对我来说,没有这样的目录:/a并/b确保命令失败.我想cdb仅在cda别名执行成功的情况下执行别名.但是,echo与最后一个命令一样,它以exitstatus 0=> 结束,两者都被执行
我试过的是:
alias cda='cd \/a; exit_code=$?; echo "STATUS: $exit_code"; exit $exit_code'; alias cdb='cd \/b'
cda && cdb
Run Code Online (Sandbox Code Playgroud)
但是这完全退出了外壳=>对我来说不可行.
任何想法如何传播退出状态(在我的情况下$exit_code)作为别名退出状态?
我是haskell编程的新手.我想要一个示例代码,说明如何通过输入命令(例如QUIT)退出主程序并返回默认的Prelude>屏幕.我正在使用GHC 7.8.3解释器.还请提一下我需要导入哪些模块(如果有的话).我一直在寻找并尝试不同的东西,但似乎没有任何工作.真的很想知道如何做到这一点.非常感谢你提前
我curl [url]在Linux shell脚本中执行命令.我想在不使用临时文件的情况下同时获取此命令的退出代码及其输出.
有没有办法做到这一点?
我是bash的新手,想要抓住我的python脚本退出代码,我script.py看起来像:
#! /usr/bin/python
def foofoo():
ret = #do logic
if ret != 0:
print repr(ret) + 'number of errors'
sys.ext(1)
else:
print 'NO ERRORS!!!!'
sys.exit(0)
def main(argv):
#do main stuff
foofoo()
if __main__ == "__main__":
main(sys.argv[1:]
Run Code Online (Sandbox Code Playgroud)
我的bash脚本:
#!/bin/bash
python script.py -a a1 -b a2 -c a3
if [ $?!=0 ];
then
echo "exit 1"
fi
echo "EXIT 0"
Run Code Online (Sandbox Code Playgroud)
我的问题是我总是exit 1在我的bash脚本中打印,如何在我的bash脚本中获取我的python退出代码?
编写一个bash脚本,在使用--help参数调用时显示用法信息,建议退出/退出脚本的退出代码是什么?
$ my_script --help; echo $?
Usage ...
0
Run Code Online (Sandbox Code Playgroud)
要么
$ my_script --help; echo $?
Usage ...
1
Run Code Online (Sandbox Code Playgroud)
如果有不同的意见,一个或其他选项的论据是什么?
grep在MacOS上)的工具,man返回一个非零退出代码.bash,sh,vim返回0作为退出代码.