我正在尝试使用Java的Runtime.exec()执行Perl解释器的副本.但是,它返回了错误代码9.在运行该文件几次之后,perl解释器神秘地开始返回代码253,而我的命令完全没有变化.
代码253/代码9是什么意思?谷歌搜索perl口译员的退出代码没有任何结果.在哪里可以找到Perl解释器的退出代码列表?
无论如何通过exec($ cmd,$ output,$ exitCode)在后台运行php脚本的退出状态代码?
例如:
exec('php script.php &', $output, $exitCode);
Run Code Online (Sandbox Code Playgroud)
如果不包括尾随'&',那么$ exitCode按预期工作,否则它总是为0.
在我的.nsi文件中,我正在呼叫ExecWait '"$INSTDIR\application.exe" ' $0。在application.exe中,我将返回成功和失败的退出代码。如何在.nsi文件中捕获那些退出代码。
我有一个C#4应用程序,它启动另一个应用程序来执行一些Python代码.Python代码可以毫无问题地执行(在PythonWin上检查).
在我的应用程序中,我看到退出代码是-2146234327.我一直在谷歌搜索,无法弄清楚它是什么意思.
有任何想法吗?
谢谢
我有一个C++程序,我用来测试另一个程序不会崩溃.父代码(我们称之为'parentProg')看起来像这样:
int run(const char * command)
{
...
int retCode = system(command);
printf("Code is %d\n",retCode);
if(retCode == 134) //128 + SIGABORT
{
// Record error conditions
...
}
}
Run Code Online (Sandbox Code Playgroud)
命令变量包含正在测试的程序(我们称之为'childProg').使用以前的Linux发行版,此代码按预期工作.如果a.out崩溃或命中一个断言,它将返回134并且错误处理代码将运行.但是,在我升级到更新的Linux发行版后,情况就不再如此了.相反,当使用GDB或nemiver作为衍生程序运行时,我看到返回代码为6.奇怪的是,如果我单独运行子程序或使用DDD,它将恢复到134.
对于以下测试,我将childProg修改为仅以下代码:
#include <assert.h>
int main(int argc, char * argv[])
{
assert(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
childProg本身
[user@localhost multi]$ ./childProg
childProg: temp.cpp:5: int main(int, char **): Assertion `0' failed.
Abort
[user@localhost multi]$ echo $?
134
Run Code Online (Sandbox Code Playgroud)
parentProg产生childProg
[user@localhost multi]$ ./parentProg 1 o
Running 1 times
childProg: temp.cpp:5: int main(int, char **): Assertion `0' …Run Code Online (Sandbox Code Playgroud) 我发现的有关Windows任务计划程序结果的所有内容都只是关于几个代码的简短细节.
有人知道完整清单吗?
例如,我无法找到有关错误代码0xFF的任何内容.
编辑:例如,如果我添加此任务(用于测试名为"Notifu"的命令行程序):
schtasks /create /tn "NotifuTest" /tr "d:\Temporal\Notifu\notifu64.exe /m 'Test'" /sc minute /mo 1 /sd 10/10/2010 /ru "SYSTEM"
Run Code Online (Sandbox Code Playgroud)
已通过命令行验证了相同的命令.
这是结果(抱歉,我的Windows是西班牙语); 注意0xFF(程序似乎正在执行,但没有结果:

在Ubuntu 14.04中的bash命令行上:
echo "z" | grep -e 'x' ; echo $PIPESTATUS
Run Code Online (Sandbox Code Playgroud)
总是显示0,即使显然"z"中没有"x".但:
echo "z" > /tmp/z
grep -e 'x' /tmp/z ; echo $PIPESTATUS
Run Code Online (Sandbox Code Playgroud)
按预期工作,如果模式为'x'(如图所示)则返回1,如果模式为'z'则返回0.
为什么?
程序可以使用各种不同的状态代码退出.
我想将退出处理程序绑定为基于此状态代码处理最终任务的所有方法.
是否可以从退出处理程序中调度状态代码?
据我所知,不.
因此,我无法获取状态值,如下面的小例子所示:
#include <iostream>
#include <cstdlib>
int Get_Return_Code(){
//can this be implemented?
return 0;
}
void Exit_Handler() {
// how do I get the return code
// from within the exit heandler?
auto return_code = Get_Return_Code(); //?
// I'd like to make decisions based on the return code
// while inside my exit handler
if (return_code == EXIT_SUCCESS){
std::cout << "perform exit successful tasks...\n";
}
else {
std::cout << "perform exit failure tasks...\n";
}
} …Run Code Online (Sandbox Code Playgroud) 在Nim中,要编写作为某种主要功能执行的代码,您可以这样做(类似于Python中的主要检查):
when isMainModule:
echo ("Hello, Nim!")
Run Code Online (Sandbox Code Playgroud)
但是,对于我一生来说,我不知道如何返回错误代码。传统上总是有一个使主函数返回的选项int,但是由于实际上不是在主函数中proc,因此似乎不可能return; 我唯一想出的方法是raise例外。当然,有一种方法可以控制您的退出代码是否为零?