Ho un semplice C-programma "./my_program"
Cosa devo fare per ottenere l'intero valore di ritorno di c-program dalla riga di comando?
#include <stdio.h>
int main (int argc , char **argv) {
unsigned int return_result = 0x474;
printf("return_result = %d = 0x%x \n",return_result,return_result);
return return_result;
}
Di conseguenza, questo programma stampa:
return_result = 1140 = 0x474
voglio ottenere un valore di ritorno di c-programma all'interno script bash. Secondo questo link Anyway to get return value of c program from command line? Dovrei ottenere questa variabile da $?
Ma quando mi lancio come comandi conseguenza:
./my_program
echo $?
ottengo
116
E 'ovviamente, che 116 = 0x74 (il byte più basso). Ma mi piacerebbe ottenere l'intero valore int non firmato. Cosa c'è che non va? Cosa devo fare per ottenere l'intero valore di ritorno di c-program dalla riga di comando? Questo non riguarda solo il tipo "unsigned int". Cosa devo fare nel caso in cui ho creato un tipo complicato, per esempio, - struttura.
ho provato questo:
return ((unsigned int) return_result_section_size);
Non funziona.
Probabilmente perché è comune usare 'int' per i numeri che non hanno bisogno di qualcosa di più grande. Per lo stesso motivo è 'int argc' e non' unsigned int argc' – ThiefMaster
Solo perché Unix limita i codici di uscita a un singolo byte non significa che lo standard dovrebbe forzare la stessa restrizione su altre piattaforme. – jamesdlin
Ok, grazie per la risposta! –