为什么 std::process::Command::ouput 会失败?

Why would std::process::Command::ouput fail?

什么会导致 std::process:Command::output 失败?如果被调用程序失败,错误将作为结果 Output.stderr 的一部分被捕获,所以我猜 output 只会 return 一个 Error 如果 OS由于某种原因未能创建新流程?对于我的简单 CLI 工具,我可以安全地忽略它吗?

  • 打开正在执行的二进制文件可能存在一些问题(即访问被拒绝,不存在)
  • 等待进程完成时,waitpid 系统调用可能是
  • 获取输出涉及创建管道,如果达到文件描述符限制,管道将失败(cat /proc/sys/fs/file-max 进行检查)
  • 还涉及到打开文件,如果达到打开文件数限制会失败(ulimit -n检查)

您可能只需要担心前两个:您无法对内核中的限制做任何事情。