首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么以及何时在Lua中使用os.exit()函数的参数"code“

问为什么以及何时在Lua中使用os.exit()函数的参数"code“
EN

Stack Overflow用户
提问于 2020-08-10 01:22:33
回答 1查看 423关注 0票数 2

在Lua文档中,他们说os.exit([code])中的os.exit([code])参数在退出脚本时返回的值不是0,例如,如果我运行以下行:

代码语言:javascript
复制
os.exit(7)

它将产生以下产出:

代码语言:javascript
复制
>Exit code: 7

我的问题是,为什么以及什么时候更改脚本的退出值是有用的?比如,何时何地使用这个退出代码"7"?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-10 01:48:43

该值返回给运行Lua解释器的进程;C语言具有相同的功能。

通常,在成功执行脚本时返回0,在出现某种错误时返回一个非零值。如果从另一个脚本调用Lua脚本,则错误代码可以指导调用脚本处理错误。

在Bash中,可以通过检查$?外壳变量来检查返回的值:

代码语言:javascript
复制
$ lua -e "os.exit(7)"
$ echo $?
7

如果使用os.execute从另一个Lua脚本调用Lua脚本,则退出代码是三个返回值中的第三个:

handy_script

代码语言:javascript
复制
#!/usr/bin/env lua

io.write(string.format("Doing something important...\n"))
os.exit(7)

main_script

代码语言:javascript
复制
#!/usr/bin/env lua

b, s, n = os.execute("./handy_script")
io.write(string.format("handy_script returned %s, %s: %d\n", tostring(b), s, n))
代码语言:javascript
复制
$  ./main_script
Doing something important...
handy_script returned nil, exit: 7

os.execute返回的第一个值是布尔值(如果命令已成功执行,则为fail )(从Lua5.4开始,fail仍然等同于nil)。返回的第二个值是字符串"exit",如果命令正常终止,则返回"signal"。返回的第三个值是对os.exit()调用的退出代码,这里是7。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63332954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档