Segue resposta da professora, para quem tiver o mesmo problema:
Embora o código de saída passado para a chamada ao sistema sys_exit é um número inteiro de 4 bytes (na arquitetura de 32 bits), o terminal considera que os códigos de saída da execução de programas são números entre 0 e 255 (ou seja, de apenas 1 byte).
Quando você testa o seu programa para o número 117, o valor que ele retorna é 345. Mas o "echo $?" mostra 89 pelo seguinte motivo:
- 345 em binário de 4 bytes é o número: 00000000 00000000 00000001 01011001 .
Como o exit status no terminal é um byte só, então o echo mostra o byte menos significativo de 345, ou seja: 01011001 . Esse número binário corresponde a 89 em decimal.