标签: exit-code

在C#中以Process.Kill()终止进程的退出代码

如果在我的C#应用​​程序中,我正在创建一个可以正常终止或者开始行为不端的子进程,在这种情况下我通过调用Process.Kill()来终止它.但是,我想知道进程是否已经退出通常.我知道我可以获得已终止进程的错误代码,但是什么是正常的退出代码以及什么意味着该进程被杀死了?

c# exit-code kill-process

5
推荐指数
2
解决办法
7277
查看次数

如果仍有可达的alloc,如何使valgrind报告错误

我正在编写一个生成C代码的编译器.生成的程序只包含main函数,它们使用大量内存,用malloc()分配.分配的大部分内存仅用于程序的一小部分,我认为在使用后释放它是个好主意,因为它不会再被使用.我很高兴,如果valgrind会向我报告在程序结束时内存不是free()d,即仍然可以访问的内存.我在Makefile中使用带有--error-exitcode = 1的valgrind来自动检查这种问题.

问题是:有没有办法让valgrind退出1,以防仍有可达的分配?

c free valgrind exit-code exit

5
推荐指数
1
解决办法
1122
查看次数

Visual Studio预构建事件;检查每个事件的退出代码

我有多个项目的解决方案。仅当两个事件在预构建事件中都退出且错误代码为0时,才需要构建一个项目。

所以我认为我可以做以下事情:

“ C:\ Path \ To \ Binary1.exe”和“ C:\ path \ to \ binary2.exe”

在我的测试方案中,出现了问题,因此Binary1.exe退出并带有非零值。但是Visual Studio还是继续构建项目。当我在cmd中运行构建前事件命令行并回显%errorlevel%时,我看到退出代码为非零。

当我只放

“ C:\ Path \ To \ Binary1.exe”

在预构建事件中,构建停止,并且在Error ListVisual Studio窗口中显示错误。

我可以肯定Binary1.exe会以非零值退出,因为它在退出前还会显示一个消息框。

我可以想到一种解决方案。Binary1.exe调用Binary2.exe并以非零退出代码退出,而Binary2.exe以非零退出代码退出。但这并不是一个灵活的解决方案。

总结一下: 当其中一个命令返回非零值时,如何运行多个预构建事件并停止构建?

events exit-code visual-studio pre-build-event

5
推荐指数
1
解决办法
1543
查看次数

Bash:检查多管道命令链的退出状态

我在检查多管道命令链中的某个命令是否确实抛出错误时遇到问题.通常这不难检查,但在我的情况下既不set -o pipefail检查也不检查${PIPESTATUS[@]}.设置如下:

cmd="$snmpcmd $snmpargs $agent $oid | grep <grepoptions> for_stuff | cut -d',' f$fields | sed 's/ubstitute/some_other_stuff/g'"
Run Code Online (Sandbox Code Playgroud)

注1:该命令经过彻底测试,运行良好.

现在,我想将该命令的输出存储在一个名为的数组中procdata.因此,我做了:

declare -a procdata
procdata=( $(eval $cmd) )
Run Code Online (Sandbox Code Playgroud)

注2:eval是必要的,因为否则$snmpcmd会抛出一个invalid option -- <grepoption>没有意义的错误,因为显然<grepoption>不是一个$snmpcmd选项.在这个阶段,我认为这是一个错误,$snmpcmd但这是另一个节目......

如果发生错误,则为procdata空.但是,由于两个不同的原因,它可能是空的:要么是因为执行$snmpcmd(例如超时)时发生错误,要么是因为grep无法找到它要查找的内容.问题是,我需要能够区分这两种情况并单独处理它们.

因此,set -o pipefail不是一个选项,因为它会传播任何错误,我无法区分管道的哪个部分失败.另一方面,即使我有很多管道,echo ${PIPESTATUS[@]}总是会0在之后procdata=( $(eval $cmd) )!然而,如果我在提示符处直接执行整个命令并echo ${PIPESTATUS[@]}在之后立即调用,则会正确返回所有管道的退出状态.

我知道我可以将错误的流绑定到stdout但我必须使用启发式方法来检查元素procdata是有效还是错误消息,并且我冒着得到误报的风险.我也可以管道stdout /dev/null并只捕获错误流并检查是否${#procdata[@]} …

bash snmp pipe exit-code command-substitution

5
推荐指数
1
解决办法
5211
查看次数

如何检查perl -MCPAN -e的返回值/退出状态?

我正在为我的公司编写安装程序,以便我们可以轻松设置新机器.其中一部分是通过各个perl -MCPAN -e 'install "Module::Name"'命令安装的一系列CPAN模块.我创建了一个模块数组(大约200个),它通过bash脚本中的foreach循环安装.但是,我现在想在启动新模块之前检查模块安装的退出状态,这可能吗?这是我到目前为止所尝试的:

for i in "${CPANmodules[@]}"
do
    echo -e "\033[1;32mInstalling CPAN module $i \033[0m"
    perl -MCPAN -e "install \"$i\""
    if [ $? -ne 0 ]
    then
        echo "Error installing module $i"
    fi
done
Run Code Online (Sandbox Code Playgroud)

我也试过以下,没有成功:

perl -MCPAN -e 'install "Madeup::Modulename"'
perl -e 'print $?'
Run Code Online (Sandbox Code Playgroud)

但是,即使模块甚至不存在,它也始终返回0.

任何帮助,将不胜感激.

bash perl cpan return-value exit-code

5
推荐指数
1
解决办法
497
查看次数

Python检查shell命令的退出状态

#function运行shell命令

def OSinfo(runthis):
        #Run the command in the OS
        osstdout = subprocess.Popen(runthis, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
        #Grab the stdout
        theInfo = osstdout.stdout.read() #readline()
        #Remove the carriage return at the end of a 1 line result
        theInfo = str(theInfo).strip()
        #Return the result
        return theInfo
Run Code Online (Sandbox Code Playgroud)

#flash raid固件

OSinfo('MegaCli -adpfwflash -f ' + imagefile + ' -noverchk -a0')
Run Code Online (Sandbox Code Playgroud)

#返回固件闪存状态

?
Run Code Online (Sandbox Code Playgroud)

一个资源建议使用'subprocess.check_output()',但是,我不知道如何将其合并到函数OSinfo()中.

python subprocess exit-code

5
推荐指数
2
解决办法
7276
查看次数

如何在外壳中获取测试命令返回码?

是否有更好的方法从一行中获取命令的返回代码。例如:

$ test $(ls -l) ||echo 'ok'
-bash: test: too many arguments
ok
Run Code Online (Sandbox Code Playgroud)

上面的脚本在test命令中有错误,因为它似乎解析输出“ ls-l”而不返回代码。

我知道使用“如果”语法可以正常工作,但是需要多一行。

ls -l
if [ $? -eq 0 ];then
   echo 'ok'
fi
Run Code Online (Sandbox Code Playgroud)

shell exit-code

5
推荐指数
2
解决办法
8082
查看次数

如何设置Spark应用程序退出状态?

我正在编写一个spark应用程序并使用spark-submit shell脚本运行它(使用yarn-cluster/yarn-client)

正如我现在看到的,spark-submit的退出代码是根据相关的纱线应用决定的 - 如果SUCCEEDED状态为0,否则为1.

我想要选择返回另一个退出代码 - 对于我的应用程序成功发生一些错误的状态.

可能吗?从应用程序返回不同的退出代码?

我试过使用System.exit()但没有成功......

谢谢.

exit-code hadoop-yarn apache-spark spark-submit

5
推荐指数
1
解决办法
4923
查看次数

Python子进程返回错误的退出代码

我写了一个脚本来启动一些并行运行的进程(简单单元测试).它会做N与工作num_workers同时并行处理.

我的第一个实现分批运行流程,num_workers似乎工作正常(我在false这里使用命令来测试行为)

import subprocess

errors = 0
num_workers = 10
N = 100
i = 0

while i < N:
    processes = []
    for j in range(i, min(i+num_workers, N)):
        p = subprocess.Popen(['false'])
        processes.append(p)

    [p.wait() for p in processes]
    exit_codes = [p.returncode for p in processes]

    errors += sum(int(e != 0) for e in exit_codes)
    i += num_workers

print(f"There were {errors}/{N} errors")
Run Code Online (Sandbox Code Playgroud)

但是,测试不会花费相同的时间,所以我有时候会等待慢速测试才能完成.因此,我重写了它,以便在完成任务时继续分配任务

import subprocess
import os


errors = 0
num_workers = 40 …
Run Code Online (Sandbox Code Playgroud)

python subprocess exit-code

5
推荐指数
1
解决办法
545
查看次数

如何在Gitlab中使作业完成并显示警告

我的意思是要获得此状态:

在此处输入图片说明

我可以通过“退出1”失败来完成我的工作,但在警告时不能做同样的事情

exit-code gitlab

5
推荐指数
2
解决办法
464
查看次数