获取已完成流程的最后工作目录

时间:2016-03-03 23:45:17

标签: unix ocaml

是否可以获取已完成流程的最后一个工作目录?例如:我们已经分叉了一个进程,等待它完成,获得了退出代码和一些输出,现在我们想要检查进程所在的最后一个工作目录。

我们的应用程序是用OCaml编写的,所以这里是大致相同的代码:

open Core.Std

let pinfo = Unix.create_process ~prog:"/bin/sh" ~args:["-c"; "cd ~/foo/bar"] in
let open Unix.Process_info in
let _ = Unix.waitpid pinfo.pid in
(* what was the last working directory of pinfo.pid? *)

任何建议,无论是否具体为OCaml,都将不胜感激!此外,最适合在MacOSX和Linux上运行的解决方案。

1 个答案:

答案 0 :(得分:0)

我不认为Linux内核会提供这些信息。如果应用程序是黑匣子,您可以使用LD_PRELOADstrace跟踪chdir()来电。