场景如下(尚无代码):Linux进程在while(1)循环中永远运行。该过程在C/C++(POSIX)中实现。该过程将一些数据保存到std::vector。
myvector.push_back("test1");
myvector.push_back("test1");
myvector.pop_back();
myvector.push_back("test1");
该过程将运行并修改 vector 。我正在寻找一种在使用特定的命令行参数执行二进制文件时将打印 vector 值的机制。
假设这个名为“myprocess”的进程正在运行。我想从新的 shell 程序(如./myprocess -debug)执行相同的二进制文件,并打印STL容器的值。
任何想法?最好的机制是什么(即打印另一个进程的内存)
最佳答案
通常,您不会“打印另一个进程的内存”。您要做的是向另一个进程发送信号,要求其打印出 vector 的内容。
为此,您可以使用POSIX signal(例如SIGUSR1
)。
一种更灵活的方法是使进程侦听命名管道(或TCP端口)并接受该管道上的命令。一种这样的命令可以是打印出 vector 的内容。
关于c++ - 通过命令行打印正在运行的linux C进程的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8385911/