coreutils คว้าจากคอมไพล์ ....
ดูทางออกเราเห็น ...
openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i exit
if (status != EXIT_SUCCESS)
exit (status);
/* Since this program exits immediately after calling 'rm', rm need not
atexit (close_stdin);
usage (EXIT_FAILURE);
exit (EXIT_SUCCESS);
usage (EXIT_FAILURE);
error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
exit (EXIT_SUCCESS);
exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
กำลังดูตัวแปรสถานะ ....
openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i status
usage (int status)
if (status != EXIT_SUCCESS)
exit (status);
enum RM_status status = rm (file, &x);
assert (VALID_STATUS (status));
exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
ดูเหมือนว่าจะไม่มีอะไรเกิดขึ้นกับสถานะทางออก
ฉันเห็น EXIT_FAILURE และ EXIT_SUCCESS ไม่ใช่สิ่งอื่น
ดังนั้นโดยทั่วไป 0 และ 1 / -1
หากต้องการดู syscalls exit ที่เฉพาะเจาะจงและสิ่งที่เกิดขึ้นในผังกระบวนการลองทำสิ่งนี้
openfly@linux-host:~/ $ strace rm -rf $whatever
ค่อนข้างง่าย
Ref:
http://www.unix.com/man-page/Linux/EXIT_FAILURE/exit/
man ls
ใช้ Ubuntu มันจะอธิบายถึงสาเหตุของสถานะการออกที่ไม่ใช่ศูนย์