标签: exit-code

EXIT_SUCCESS和EXIT_FAILURE.是编译一次运行或编写一次编译到处?

可能重复:
(C/C++)从main返回EXIT_SUCCESS或0?

很长一段时间我都在使用return 0;,从我开始使用allegro开始.比起我看过C++书并找到关于EXIT_SUCCESS的内容,比我查看定义的stdlib.h或cstdlib并且只有两行:

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?我正在使用最后一个devc ++ 4.9.9.2的mingw版本.

c c++ return std exit-code

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

在 bash 提示符中捕获上一个命令的退出值

如何在 bash 提示符中捕获上一个命令的退出值?我想这样做是因为我也想将当前的 git 分支也包含在我的路径中,并且这会改变$?

我已经尝试了以下提示的多种变体(例如,围绕 RETVAL 的赋值的 `、` 和 $()),但 RETVAL 在所有提示中都是空的:

PS1="\$(RETVAL=$(echo \$))\$(cd 124123)retval: $RETVAL"
Run Code Online (Sandbox Code Playgroud)

里面的 cd 命令只是一个占位符,用于调用 git 当前分支函数,之后我会回显 RETVAL (这始终是一个空字符串,用于测试它是否被分配。

其他类似/相关的问题:

我还尝试使用这些页面上的示例在提示命令中设置 RETVAL,但提示中没有显示任何内容

bash command-prompt exit-code

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

Python lib psutil:如何使用 wait() 获取退出状态

我正在使用带有许多参数的 Subprocess Popen 执行第 3 方应用程序

myprocess=Popen(['executionlist','with','arguments'],stdout=PIPE,stderr=PIPE)
myprocess.communicate()
Run Code Online (Sandbox Code Playgroud)

获取我的 stdout 和 err 元组,第 3 方应用程序在后台启动,因此我在 stdout 中获取其 pid...[如果我尝试在前台运行,它会抛出“打开终端时出错:未知”] 我正在使用 psutil跟踪所有这些分叉并使用以下方式监控它:

EXITCODE=psutil_obj.wait(timeout=xxx)
Run Code Online (Sandbox Code Playgroud)

应用程序发送不同的退出代码,我需要在 EXITCODE 中访问这些代码,但当我在不同的 python 脚本中运行它时,它总是给我“无”值......

根据 https://code.google.com/p/psutil/wiki/Documentation “Wait() 进程终止,如果该进程是当前进程的子进程,也返回退出代码,否则无。”

无论如何,我是否可以从独立进程 ID 访问退出代码,而不是由 Popen 专门分叉的?

python subprocess exit-code

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

检查脚本中的diff退出状态

在命令行上,在两个不同的文件上使用diff后,命令

echo $?   
Run Code Online (Sandbox Code Playgroud)

报告回'1'.当我在脚本中尝试相同的操作时,如下所示:

echo "` diff $F1 $F2`"   
rv=$?  
if [[ $rv == 1 ]]  
then    
    echo "failed"    
fi        
Run Code Online (Sandbox Code Playgroud)

然后我从不打印'失败'(即使是不同的文件).请注意,这是bash shell,因此语法应该没问题(例如,如果我检查'0',它总是打印).

如何检查diff命令是否发现差异,并有条件地处理?

这是在Ubuntu 12.04下.

unix linux bash exit-code

1
推荐指数
2
解决办法
8313
查看次数

为什么来自Python子进程的ln在从正常命令行成功时失败?

正如标题所说:

>>> from subprocess import check_output
>>> check_output(['ln', '~/other_folder/src/models/sc_models.py', './src/models/sc_models.py'])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
CalledProcessError: Command '['ln', '~/other_folder/src/models/sc_models.py', './src/models/sc_models.py']' returned non-zero exit status 1
>>> exit()
$ ln ~/other_folder/src/models/sc_models.py ./src/models/sc_models.py
$
Run Code Online (Sandbox Code Playgroud)

怎么会这样?如何从命令行取得成功,但是从Python子进程调用失败了?

欢迎所有提示!

python bash subprocess ln exit-code

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

如何从源脚本中获取退出代码

我有两个脚本主脚本和子脚本,我使用源脚本调用下脚本,如果未安装指定的包,那么它应该返回退出代码1。

如果我使用运行主脚本,bash main.sh我无法从主脚本获取 subScriptExitCode

主脚本

source "sub.sh"

subScriptExitCode=$?

log "subScript ExitCode: $subScriptExitCode"

if [ $subScriptExitCode -ne 0 ]; then
    exit $subScriptExitCode
fi
Run Code Online (Sandbox Code Playgroud)

子脚本

type -p <package>

subScriptExitCode=$?

if [ $subScriptExitCode -ne 0 ]; then
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

bash shell exit-code

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

程序的退出代码为空 void main() 是什么意思?

我制作了一个简单的 C 程序,其中的 main 为空,如下所示,并用 gcc 编译它

void main(){
}
Run Code Online (Sandbox Code Playgroud)

执行时,它返回退出代码为25,如果我添加一个 printf 语句,在包含 stdio.h 后,它返回退出代码5

255here的含义是什么,为什么它会被在 main() 之前或之后执行的任何代码返回?如果我使用 int main() 并且不放置 return 语句,退出代码为零。

c linux shell gcc exit-code

1
推荐指数
2
解决办法
240
查看次数

在 if 语句中捕获 bash 退出代码

如果我直接使用单个命令对退出代码进行简单测试:

[user@localhost ~]$ date
Tue Sep  8 14:00:11 CEST 2020
[user@localhost ~]$ echo $?
0
[user@localhost ~]$ dat
bash: dat: command not found...
[user@localhost ~]$ echo $?
127
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将它们放入 if 语句中,我发现对于退出代码 0,输出正常,但是,对于“命令未找到”代码(应该是 127),它返回“1”。

[user@localhost ~]$ date 
Tue Sep  8 14:02:18 CEST 2020
[user@localhost ~]$ if [ $? -eq 0 ]; then   echo "Success: $?"; else   echo "Failure: $?" >&2; fi
Success: 0
[user@localhost ~]$ dat
bash: dat: command not found...
[user@localhost ~]$ if [ $? -eq 0 ]; then   echo …
Run Code Online (Sandbox Code Playgroud)

bash if-statement exit-code

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

在 SIGINT 上,Linux 上的退出代码为 130,Windows 上的退出代码为 2

为什么下面的空程序在 Linux 上以 130 退出CtrlC这是我怀疑的,因为我的 shellbash将 SIGINT 包装为 130 (128+2)。

在使用Git Bash ( )的 Windows 上git-bash.exe,我得到退出代码 2。

package main

func main() {
    for {

    }
}
Run Code Online (Sandbox Code Playgroud)

这是 Go 在 Windows 上的行为还是git-bash.exe?因为我2内部需要退出代码,所以我需要使用signal包来包装它吗?

exit-code go sigint

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

从 Bash 脚本执行时,Python 函数返回不同的值

我有一个示例 Python 文件“Test_exit.py”:

import os

def test_exit():
    print('Line 1.\n')
    print('Line 2.\n')
    exit (17)

if __name__ == '__main__':
    test_exit()
Run Code Online (Sandbox Code Playgroud)

当我使用 Python 执行它时,它按预期工作:

ubuntu@ip-172-31-9-235:~$ python3 Test_exit.py
Line 1.

Line 2.

Run Code Online (Sandbox Code Playgroud)

当我检查返回的错误代码时,它确实按预期打印了“17”:

ubuntu@ip-172-31-9-235:~$ echo $?
17
Run Code Online (Sandbox Code Playgroud)

但是,当我从 Bash 脚本“Test_exit.sh”执行相同的 Python 文件时,事情会有所不同:

#!/bin/bash

    Exit_code=$(python3 Test_exit.py)
    echo $Exit_code 
Run Code Online (Sandbox Code Playgroud)

我希望它回显“17”,但它不会:

ubuntu@ip-172-31-9-235:~$ ./Test_exit.sh
Line 1. Line 2.
Run Code Online (Sandbox Code Playgroud)

它不仅不回显“17”,而且现在打印的两行没有换行...

如果我替换exit (17)sys.exit (17),则不会打印任何内容,甚至不会打印一行中的 2 行...

我的代码有什么问题?是否exit不仅会导致 Python 存在,还会导致 Bash 脚本存在?为什么根据 Python 的调用方式,字符串的打印方式不同?

编辑

为了将来参考,这是@choroba 建议的运行良好的脚本:

#!/bin/bash

    output=$(python3 Test_exit.py)
    Exit_code=$?
    echo "$Exit_code"
    echo "$output"
Run Code Online (Sandbox Code Playgroud)

python bash shell exit-code python-3.x

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

标签 统计

exit-code ×10

bash ×6

python ×3

shell ×3

c ×2

linux ×2

subprocess ×2

c++ ×1

command-prompt ×1

gcc ×1

go ×1

if-statement ×1

ln ×1

python-3.x ×1

return ×1

sigint ×1

std ×1

unix ×1