README.md

主要观点:提供了一组用于进程准备和相关操作的函数,包括准备状态机的定义和各种准备、退出、执行新进程等操作的函数实现。

关键信息

  • 定义了准备状态机的枚举类型,包含初始状态、受控终止离开、父进程回收、子进程意外终止等状态。
  • prepare函数用于进入准备状态,通过vfork创建子进程并进行相关设置,返回 0 表示成功,-1 表示失败(如已在准备状态或vfork失败等)。
  • prepare1函数在vfork的子进程中运行,根据vfork的返回值设置准备状态。
  • prep_exit函数用于从子进程中退出,设置准备状态为离开并返回僵尸进程的 pid,失败时设置errnoECHILD
  • prep_execve函数用于用新的程序图像替换子进程,成功时离开准备状态并返回执行的子进程的 pid,失败时仍在准备状态并返回-1。
  • ispreparing函数用于判断是否正在进行准备。
  • unprepare函数用于离开准备状态,释放相关资源并返回子进程的 pid。

重要细节

  • prepare函数中设置了vfork上下文,包括堆栈等信息。
  • 在不同状态的处理中,会根据reaper函数指针进行相应操作,如子进程意外终止时调用reaper
  • prep_exitprep_execve函数中,都需要先设置准备状态为离开,然后获取上下文并进行相应操作,失败时恢复准备状态为初始状态。
阅读 13
0 条评论