目标
在 (liii os) 模块中实现 getppid 函数,对标 Python 的 os.getppid(),返回当前进程的父进程 ID。
背景
(liii os) 目前已有 getpid(见 goldfish/liii/os.scm),但缺少 getppid。Python 的 os.getppid() 在 POSIX 和 Windows 上均可用:
- POSIX:通过
getppid() 系统调用获取
- Windows:需要通过
CreateToolhelp32Snapshot + Process32First/Process32Next 遍历进程快照获取父进程 ID
实现方案
优先调研 tbox:项目已经依赖 tbox(src/liii_os.cpp 中已包含 tbox/platform/file.h、tbox/platform/path.h 等),实现前先看 tbox 是否已提供跨平台的父进程 ID 获取接口(查 tbox 的 platform 模块),有则直接复用,避免手写平台相关代码。
- 在
src/liii_os.cpp 中新增 g_getppid(参考现有 g_getpid 的实现方式),向 S7 注册
- 若 tbox 没有现成接口,再回退到平台实现:POSIX 用
getppid() 系统调用;Windows 用 CreateToolhelp32Snapshot + Process32First/Process32Next 遍历进程快照
- 在
goldfish/liii/os.scm 中导出并定义 getppid
- 在
tests/goldfish/liii/os/ 下新增 getppid-test.scm 测试文件
验收标准
相关文件
goldfish/liii/os.scm
- C 实现参考现有
g_getpid 所在文件
tests/goldfish/liii/os/
目标
在
(liii os)模块中实现getppid函数,对标 Python 的os.getppid(),返回当前进程的父进程 ID。背景
(liii os)目前已有getpid(见goldfish/liii/os.scm),但缺少getppid。Python 的os.getppid()在 POSIX 和 Windows 上均可用:getppid()系统调用获取CreateToolhelp32Snapshot+Process32First/Process32Next遍历进程快照获取父进程 ID实现方案
优先调研 tbox:项目已经依赖 tbox(
src/liii_os.cpp中已包含tbox/platform/file.h、tbox/platform/path.h等),实现前先看 tbox 是否已提供跨平台的父进程 ID 获取接口(查 tbox 的 platform 模块),有则直接复用,避免手写平台相关代码。src/liii_os.cpp中新增g_getppid(参考现有g_getpid的实现方式),向 S7 注册getppid()系统调用;Windows 用CreateToolhelp32Snapshot+Process32First/Process32Next遍历进程快照goldfish/liii/os.scm中导出并定义getppidtests/goldfish/liii/os/下新增getppid-test.scm测试文件验收标准
(getppid)返回一个正整数(父进程 PID)ps -o ppid= -p $$结果一致bin/gf tests/goldfish/liii/os/getppid-test.scmbin/gf doc --build-json更新函数索引相关文件
goldfish/liii/os.scmg_getpid所在文件tests/goldfish/liii/os/