pdfLatex 运行时超时退出代码

pdfLatex 运行时超时退出代码

我正在使用 latexmk 编译我的文档,并希望限制每个编译周期的时间。为了做到这一点,我timeout以以下方式使用 util:

latexmk -f -pdf -bibtex \
  -pdflatex="timeout 5s xelatex -interaction=nonstopmode -synctex=-1 %O %S" \
  main.tex

当编译循环耗时超过 5 秒时,就会发送 TERM 信号并终止循环。但 latexmk 报告的返回代码是 31744:

收集的错误摘要(可能重复其他消息):
  pdflatex:“pdflatex”命令返回代码 31744

timeoututil 说应该是 124:If the command times out ... then exit with status 124

我查看了 latexmk 源代码并且它所谈论的退出代码是从提供的命令运行中捕获的(在我的情况下是timeout 5s xelatex...

我认为这是因为 pdflatex 捕获了 SIGTERM 并尝试在超时命令中使用 SIGKILL timeout --signal=SIGKILL 5s...,但退出代码为 35072。

所以,我的问题是这些奇怪的退出代码是什么?它们来自哪里,它们意味着什么?我查看了 pdftex 和 xetex 源,但没有发现任何提及它们的内容。我能确定 31744 退出代码意味着 SIGTERM 而不是其他吗?

关于我正在使用的软件的简短说明:

  • latexmk 4.39
  • XeTeX,版本 3.1415926-2.5-0.9999.3(TeX Live 2013/Debian)
  • GNU coreutils 8.23 超时

感谢您的任何帮助。

答案1

报告的代码latexmk是 Perlsystem函数报告的代码。如该函数的文档所述,http://perldoc.perl.org/functions/system.html,这些代码是执行程序的退出代码左移 8 位。(低位有一些额外信息。)因此,要获取执行程序的实际退出代码,只需将报告的退出代码除以 256 latexmk

相关内容