增加signal的文字提示

This commit is contained in:
virusdefender
2016-05-31 23:35:05 +08:00
parent 53b132a211
commit e8fe2a7279
3 changed files with 36 additions and 1 deletions

26
utils/signal2str.py Normal file
View File

@@ -0,0 +1,26 @@
# copy from https://github.com/DMOJ/judge/issues/162
try:
# in large part from http://code.activestate.com/recipes/578899-strsignal/
import signal
import ctypes
import ctypes.util
libc = ctypes.CDLL(ctypes.util.find_library("c"))
strsignal_c = ctypes.CFUNCTYPE(ctypes.c_char_p, ctypes.c_int)(("strsignal", libc), ((1,),))
NSIG = signal.NSIG
def strsignal_ctypes_wrapper(signo):
# The behavior of the C library strsignal() is unspecified if
# called with an out-of-range argument. Range-check on entry
# _and_ NULL-check on exit.
if 0 <= signo < NSIG:
s = strsignal_c(signo)
if s:
return s.decode("utf-8")
return "Unknown signal %d" % signo
strsignal = strsignal_ctypes_wrapper
except:
strsignal = lambda x: 'signal %d' % x