0–127 limite de alcance no WEXITSTATUS no antigo Unix?

4

É bem conhecido que, em muitos, se não todos os Unixes, o status de saída de um processo será truncado para seus 8 bits mais baixos quando passado por _exit , waitpid e WEXITSTATUS . (As iterações atuais de POSIX especificam que o status deve não ser truncado quando passado por _exit e waitid , mas isso não é relevante para essa questão.)

Era sempre o caso, possivelmente deep no passado, que o status de saída seria truncado para seus menores sete bits quando passados por qualquer mecanismo que fosse o equivalente a _exit / waitpid / WEXITSTATUS no momento? Em caso afirmativo, em qual (is) implementação (ões) histórica (s), e há quanto tempo?

    
por zwol 15.05.2017 / 21:26

1 resposta

5

O 7-bit seria um desvio incomum do PDP-11, que de acordo com o unix Manual da 2ª edição (pág.144) deixou cair o status de saída em

The low byte of r0 is available as status to the parent process.

R0 era um registrador de 16 bits de uso geral, e o byte baixo seria de oito bits completos. E mais em wait R0 tem o ID do processo, enquanto o byte alto de MQ obtém o byte baixo de R0 , mas esse ainda é um valor de 8 bits.

    
por 15.05.2017 / 22:30

Tags