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 -1hoặc tương tự để đại diện cho "chấm dứt bất thường". Vấn đề là, trong POSIX ít nhất, -1chưa bao giờ và không phải là mã trạng thái hợp lệ. man 3 exitminh họa rằng exit()trả về giá trị của status & 0377cha mẹ, có nghĩa là -1trở 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.
charvì 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 .