Ho un programma C che restituisce un valore intero. Sono rimasto sorpreso di scoprire che in sede di esame il valore restituito dal prompt della shell ottengo il valore del modulo 256.Qual è l'intervallo valido per il valore di ritorno del programma in Linux/bash?
/* prog.c */
int main(...) { return 257; }
-
> ./prog.e
> echo $?
1
- Perché non vedo l'intero intero ?
- Dove viene documentato questo comportamento?
- Come posso ottenere l'intero valore a 32 bit nella shell?
I valori di ritorno sono per definizione codici di errore. Non è possibile utilizzare il valore restituito per comunicare un altro valore numerico, è * necessariamente * utilizzato per indicare il successo (0) o un errore (diverso da zero). Se il tuo intento è di generare un qualche tipo di conteggio o altro valore numerico diverso da zero durante l'esecuzione * di successo, devi scriverlo su STDOUT. – meagar
Grazie, @meagar. Ho bisogno di questo come un trucco temporaneo su un codice di non produzione su cui lavoro - per verificare lo sviluppo del mio codice incorporato. Capisco l'avvertenza che hai citato, ma tuttavia non risponde alla mia domanda. – ysap
Ecco perché è un commento, non una risposta.I commenti non sono * supposti * per rispondere alle domande. Abbraccio temporaneo o altro, non sarai in grado di mantenere il numero che stai restituendo. Dovrai inviarlo a STDOUT. – meagar