aboutsummaryrefslogtreecommitdiff
path: root/rcynic
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-12-17 20:08:03 +0000
committerRob Austein <sra@hactrn.net>2013-12-17 20:08:03 +0000
commitc6fc6fd2c0521d9ad44a62d9ff11065886bb122c (patch)
treeb51721621a8254d2a674359754d144cd295e7513 /rcynic
parentbd56b87c5388bda8516f6fe56d7dde1074902acc (diff)
Handle subprocess exit codes more gracefully.
svn path=/trunk/; revision=5609
Diffstat (limited to 'rcynic')
-rw-r--r--rcynic/rcynic-cron.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/rcynic/rcynic-cron.py b/rcynic/rcynic-cron.py
index cadc24d6..d4dd420b 100644
--- a/rcynic/rcynic-cron.py
+++ b/rcynic/rcynic-cron.py
@@ -55,8 +55,14 @@ def run(*cmd, **kwargs):
os._exit(1)
else:
status = os.waitpid(pid, 0)[1]
- if status != 0:
- sys.exit("Program %s exited with status %s" % (" ".join(cmd), status))
+ if status == 0:
+ return
+ elif os.WIFSIGNALED(status):
+ sys.exit("Process %s exited with signal %s" % (" ".join(cmd), os.WTERMSIG(status)))
+ elif os.WIFEXITED(status):
+ sys.exit("Program %s exited with status %s" % (" ".join(cmd), os.WEXITSTATUS(status)))
+ else:
+ sys.exit("Program %s exited for unknown reason %s" % (" ".join(cmd), status))
want_chroot = False