_exit()

_exit()

2024 南京大学《操作系统:设计与实现》
_exit()

状态机管理:销毁状态机

void _exit(int status);

fork + exec = 自由执行任何程序

  • 还差一个销毁状态机的函数就完整了
  • UNIX 的答案: _exit
    • 立即摧毁状态机,允许有一个返回值
  • 子进程终止会通知父进程 (后续课程解释)

这个简单……

  • 但问题来了:多线程程序怎么办?
2024 南京大学《操作系统:设计与实现》
_exit()

结束程序执行的三种方法

exit 的几种写法 (它们是不同)

  • exit(0)
    • 会调用 atexit
  • _exit(0)
    • 执行 “exit_group” 系统调用终止整个进程 (所有线程)
      • 细心的同学已经在 strace 中发现了
    • 会调用 atexit 吗?
  • syscall(SYS_exit, 0)
    • 执行 “exit” 系统调用终止当前线程
    • 会调用 atexit 吗?
2024 南京大学《操作系统:设计与实现》