c-可以请求运行的外壳进程以运行一些命令并接收命令的标准输出



在Linux API方面,我们可以使用exec*函数或system函数开始运行一个shell,然后运行一些命令。

流程请求已经运行的shell过程(例如,bash进程(运行命令然后接收命令的标准输出?例如,我想在运行的shell进程中运行的命令是生成特定于壳状态信息的命令,例如dirsjobs

可以在C中使用某些实用程序在C中完成(请参阅此处和此处(?

例如,我想拥有一个C程序或外壳脚本,该脚本可以在现有外壳过程中获取运行dirsjobs的输出。

谢谢。

如果在Shell启动期间评估以下内容:

dump_shell_data() {
  mkdir -p -- "$HOME/.shell-state" || return
  jobs >"$HOME/.shell-state/$$.jobs" 2>&1
  dirs >"$HOME/.shell-state/$$.dirs" 2>&1
}
trap dump_shell_data SIGUSR1

...然后将SIGUSR1发送到已运行上述代码的外壳,将指示这些外壳跳转jobsdirs输出到以PID命名的文件。

请注意,有大量的警告。 shell的用户可能会运行一个重新定义此陷阱的第三方脚本;并且要阻止命令退出的外壳直到该命令完成后才执行陷阱。

最新更新