Mam program C, który zwraca wartość całkowitą. Byłem zaskoczony, aby dowiedzieć się, że przy badaniu wartości zwracanej z poleceń powłoki uzyskać wartość modulo 256.Jaki jest poprawny zakres wartości zwracanej przez program w systemie Linux/bash?
/* prog.c */
int main(...) { return 257; }
-
> ./prog.e
> echo $?
1
- Dlaczego nie mogę zobaczyć cały całkowitą ?
- Gdzie to zachowanie jest udokumentowane?
- Jak mogę pobrać całą wartość 32-bitową do powłoki?
Wartości zwracane są z definicji kodami błędu. Nie możesz użyć zwracanej wartości do przekazania innej wartości liczbowej, * koniecznie * jest używana do wskazania sukcesu (0) lub błędu (niezerowego). Jeśli masz zamiar wypisać jakikolwiek rodzaj lub inną niezerową wartość liczbową podczas * udanego * wykonania, musisz napisać to do STDOUT. – meagar
Dzięki, @meagar. Potrzebuję tego jako tymczasowego hackowania na jakimś nieprodukcyjnym kodzie, nad którym pracuję - w celu weryfikacji mojego rozwoju kodu wbudowanego. Rozumiem zastrzeżenie, o którym wspomniałeś, ale mimo to nie odpowiada na moje pytanie. – ysap
Dlatego jest to komentarz, a nie odpowiedź.Komentarze nie mają * przypuszczać * odpowiedzi na pytania. Tymczasowe włamanie lub w inny sposób, nie będziesz w stanie zatrzymać numeru, który powracasz. Będziesz musiał wypisać go do STDOUT. – meagar