Saya melihat di banyak perangkat lunak lama dan tutorial buruk di Internet yang merekomendasikan penggunaan exit(-1)
, return -1
atau serupa dengan mewakili "pemutusan abnormal". Masalahnya, setidaknya dalam POSIX, -1
belum pernah dan bukan kode status yang valid. man 3 exit
menggambarkan bahwa exit()
pengembalian nilai status & 0377
kepada orang tua, yang berarti bahwa -1
menjadi 255
. Pada sistem non-POSIX, EXIT_FAILURE
direkomendasikan untuk portabilitas. Tapi saya tidak pernah melihat "-1 berarti terminasi abnormal" dalam hubungannya dengan "EXIT_FAILURE mungkin sesuatu selain 1", menunjukkan bahwa mereka jelas percaya "-1" adalah konvensional bahkan pada sistem non-POSIX.
Berikut adalah contoh pertanyaan StackOverflow yang melanggengkan ini. Perangkat lunak "unrealircd" juga merupakan contoh program yang digunakan exit(-1)
untuk mengakhiri program. Dalam praktiknya, ini membuatnya sulit untuk berinteraksi systemd
.
Dari mana pola anti ini berasal? Apakah ini valid dalam beberapa konteks?
unsigned char
.
char
karena rentang nilainya adalah -128 hingga 127. Selanjutnya, saya sudah menyatakan "-1" dikonversi menjadi "255" di badan pertanyaan saya .