【问题标题】:How to recover all current processes on linux [closed]如何恢复Linux上的所有当前进程[关闭]
【发布时间】:2018-01-19 16:52:15
【问题描述】:

我需要使用 c++ 和 linux 恢复所有正在运行的进程。但是我没有找到 lib 或相应的函数。

我无法运行诸如“ps”之类的 linux 命令。

【问题讨论】:

  • 我猜“恢复”是指“列表”或“枚举”?
  • 如果您只想枚举进程,/proc 文件系统是您的朋友。但是,真的不清楚究竟你在问什么。
  • 听起来你搞砸了你的 PATH 变量。做这个 ; saveBadPATH="$PATH" ; export PATH="/usr/bin;bin". Now ps 应该可以工作。您可能需要将其他元素添加到 PATH,因此 export PATH="/other/missing/path:$PATH" 等。您可以使用 `echo "$saveBadPATH" 并且如果您看到要添加的其他元素,请确保使用上述语法添加任何包含空格字符的元素,使用 dbl-引号。祝你好运。
  • @shellter 你到底在说什么?
  • @shellter 如果路径搞砸了那么严重;那么现在可能是注销并开始新会话的好时机;)

标签: c++ linux


【解决方案1】:

(我猜你需要 inspect、scan、list 或 discover 进程;恢复进程是一件困难的事情,请阅读application checkpointing)

您应该考虑使用proc(5),即/proc/ 文件系统(特定于Linux)。

pid 1234 的进程由/proc/1234/ 目录描述。在终端中尝试ls /proc/$$/。

因此,您可以通过在 /proc/ 文件树上使用适当的调用(例如 opendir(3)、readdir(3)、closedir(3)、stat(2) 等......)来探索进程(这就是 ps , top 等.. 正在使用;请与strace(1) ...)。

注意/proc/ 下的许多文件 的大小由stat(2) 给出,但它们是顺序可读的(有点像管道)。例如尝试stat /proc/$$/status 然后cat /proc/$$/status。另见this。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2010-12-03
    • 2020-12-19
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多