在Linux API方面,我们可以使用exec*
函数或system
函数开始运行一个shell,然后运行一些命令。
流程请求已经运行的shell过程(例如,bash进程(运行命令然后接收命令的标准输出?例如,我想在运行的shell进程中运行的命令是生成特定于壳状态信息的命令,例如dirs
和jobs
。
可以在C中使用某些实用程序在C中完成(请参阅此处和此处(?
例如,我想拥有一个C程序或外壳脚本,该脚本可以在现有外壳过程中获取运行dirs
和jobs
的输出。
谢谢。
如果在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
发送到已运行上述代码的外壳,将指示这些外壳跳转jobs
和dirs
输出到以PID命名的文件。
请注意,有大量的警告。 shell的用户可能会运行一个重新定义此陷阱的第三方脚本;并且要阻止命令退出的外壳直到该命令完成后才执行陷阱。