c++ - 运行进程的 CLI 命令

标签 c++ linux

  1. GDB 如何实现将自己附加到正在运行的进程的壮举?

  2. 我需要类似的功能,我可以在其中向正在运行的进程发出 CLI 命令。例如,我可以查询进程内部状态,例如 show total_messages_processed?我如何构建对在 Linux 下向正在运行的进程发出命令的支持?

  3. 是否有一个库可以为正在运行的进程提供 CLI 通信能力,并且可以针对自定义命令进行扩展?

进程本身是用c++写的

最佳答案

GDB 不使用 CLI 与其调试对象通信;它使用 ptrace系统调用/API。

CLI 的意思是“命令行界面”。进程间最简单的通信形式是stdin/stdout。这是通过管道实现的。例如:

ps -ef | grep 'httpd'

ps 的标准输出(这将是一个进程列表)连接到 grep 的标准输入,后者将逐行处理该进程列表输出行。

您是在编写这两个程序,还是想与一个已经存在的进程进行通信?如果没有上下文,我不知道“show total_messages_processed”是什么意思。


如果您只是想让程序传达一些状态,一个好的方法是 dd 所采用的方法:向进程发送 SIGUSR1 信号会导致它转储当前的状态统计到 stderr 并继续处理:

$ dd if=/dev/zero of=/dev/null&
[1] 19716
$ pid=$!
$ kill -usr1 $pid
$ 10838746+0 records in
10838746+0 records out
5549437952 bytes (5.5 GB) copied, 9.8995 s, 561 MB/s

关于c++ - 运行进程的 CLI 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061647/

相关文章:

c++ - 静态变量未初始化

c++ - gperftools + apache + fcgi ,它不会写入文件

linux - 使用 Imagick 裁剪两个透明的 png 图像会产生不同的结果

linux - 如何根据某些字段对字符串进行排序

python - Pip 一直返回相同的错误 (Hide_cursor)

c++ - 复制指针列表没有循环

c++ - 比较中的二进制搜索和 eps

C++ 运算符优先级示例

c - 使用 pthread_cond_wait 的最佳情况

linux - 如何编写 bash 脚本来执行带有附加参数的不同命令?