質問
監督-選手コメンデコード結果をPythonます。wait()機能です。返り値には、Pythonド:
タプルを含んでいるpidを行い、終了ステータス表示:16ビット番号、低バイトの信号数と死の過程で、その高バイトの終了ステータスの場合は、信号の数はゼロ);高ビットのバイトは、場合にリセットコアファイルを作成した。
たいデコードの終了ステータス表示が整数を得るためには高低のバイト?具体的には、どうやって実施し、デコード機能の利用目的は、以下のコードスニペット:
(pid,status) = os.wait()
(exitstatus, signum) = decode(status)
解決
こうしたい:
signum = status & 0xff
exitstatus = (status & 0xff00) >> 8
他のヒント
お答えは一般の質問には、利用できる ビット操作 技法:
pid, status = os.wait()
exitstatus, signum = status & 0xFF, (status & 0xFF00) >> 8
しかし、も 内蔵機能 通訳の終了ステータス値:
pid, status = os.wait()
exitstatus, signum = os.WEXITSTATUS( status ), os.WTERMSIG( status )
参照:
- os.WCOREDUMP()
- os.WIFCONTINUED()
- os.WIFSTOPPED()
- os.WIFSIGNALED()
- os.WIFEXITED()
- os.WSTOPSIG()
取得できまintへの文字列に符号なしバイトの struct モジュール:
import struct
i = 3235830701 # 0xC0DEDBAD
s = struct.pack(">L", i) # ">" = Big-endian, "<" = Little-endian
print s # '\xc0\xde\xdb\xad'
print s[0] # '\xc0'
print ord(s[0]) # 192 (which is 0xC0)
ご夫婦でこの 配列 モジュールでできることにより便:
import struct
i = 3235830701 # 0xC0DEDBAD
s = struct.pack(">L", i) # ">" = Big-endian, "<" = Little-endian
import array
a = array.array("B") # B: Unsigned bytes
a.fromstring(s)
print a # array('B', [192, 222, 219, 173])
exitstatus, signum= divmod(status, 256)
この街の前にいっぱいだったので一本のライン、これを実行する事ができます。:
(signum, exitstatus) = (status & 0xFF, (status >> 8) & 0xFF)
編集:たします。
import amp as amp
import status
signum = status & 0xff
exitstatus = (status & 0xff00) >> 8
所属していません StackOverflow