質問

監督-選手コメンデコード結果を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)

できる解凍の状況を ビットシフトマスキング います。

low = status & 0x00FF
high = (status & 0xFF00) >> 8

したらいいと思います。Pythonプログラマで、今の構文は正しい。

この街の前にいっぱいだったので一本のライン、これを実行する事ができます。:

(signum, exitstatus) = (status & 0xFF, (status >> 8) & 0xFF)

編集:たします。

import amp as amp
import status
signum = status &amp; 0xff
exitstatus = (status &amp; 0xff00) &gt;&gt; 8
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top