Tôi thấy trong rất nhiều phần mềm kế thừa và hướng dẫn xấu trên Internet mà khuyên bạn sử dụng exit(-1)
, return -1
hoặc tương tự để đại diện cho "chấm dứt bất thường". Vấn đề là, trong POSIX ít nhất, -1
chưa bao giờ và không phải là mã trạng thái hợp lệ. man 3 exit
minh họa rằng exit()
trả về giá trị của status & 0377
cha mẹ, có nghĩa là -1
trở thành 255
. Trên các hệ thống không phải POSIX, EXIT_FAILURE
được khuyến nghị cho tính di động. Nhưng tôi không bao giờ thấy "-1 có nghĩa là chấm dứt bất thường" kết hợp với "EXIT_FAILURE có thể là một cái gì đó khác với 1", cho thấy rằng họ tin rõ ràng "-1" là thông thường ngay cả trên các hệ thống không phải POSIX.
Đây là một ví dụ về câu hỏi StackOverflow khắc phục điều này. Phần mềm "unrealircd" cũng là một ví dụ về chương trình sử dụng exit(-1)
để chấm dứt chương trình. Trong thực tế, điều này gây khó khăn cho giao diện systemd
.
Trường hợp chống mẫu này đến từ đâu? Có hợp lệ trong một số bối cảnh?
unsigned char
.
char
vì các giá trị của nó là -128 đến 127. Hơn nữa, tôi đã nói "-1" được chuyển đổi thành "255" trong thân câu hỏi của tôi .