上述链接blocking-and-resuming-execution-of-an-independent-process-in-linux中的解决方案说,我可以使用ptrace来实现我的目标 我试图运行代码 - how ptrace work between 2 processes ,但没有得到任何输出。
特别要求知道如何使用ptrace使程序只执行调试器中的几条指令。
如何在以下情况下使用ptrace限制其他进程访问少量指令?
我在linux下有两个独立的C程序。 Program1 正在 CPU core-1 中运行,而 Program-2 正在 CPU core-2 中运行。
Program-2正在执行共享库函数func-2,它由200行指令组成,用于对数据执行操作(add + shift)。
shared library function
-------
func-2()
{
// code to perform operation (add+shift) on data
}
--------
Program2.
main()
{
while(1)
func-2();
}
program1
main()
{
while()
{
// ptrace
// OR
//kill STOP <pid of program2>
// kill CONT <pid of program2>
}}
我想从Program-1或bash 中限制program-2 ,这样Program-2只能执行少量指令或限制运行1-2微秒,我可以在Program2中添加任何代码。 程序1知道程序2的PID和func-2的基地址。
我听说过可以用来控制其他进程的ptrace,并且使用ptrace可以限制进程只执行1条指令。对我来说,即使限制1-2微秒(5-10条指令)也是足够的。
如何控制运行其他CPU核心的Program-2?任何相关文件的链接都非常感谢。提前致谢。 我在linux下使用gcc。