進程附加
在之前的文章中,我們都是trace自己程序fork出來的子進程,現(xiàn)在我們來看一下如何trace一個正在運行的進程。
trace一個正在運行的進程稱為進程附加(attach)。使用的是ptrace函數(shù)的PTRACE_ATTACH參數(shù)。當一個進程成功附加到一個正在運行的進程時,此進程會成為被附加進程的父進程,同時向被附加的進程發(fā)送一個SIGSTOP信號,讓其停止,這時我們就可以對其進行操縱。當我們完成對tracee的操作后就可以使用ptrace的PTRACE_DETACH參數(shù)停止附加。
我們用一個循環(huán)來模擬一個正在運行的進程,下邊稱此程序為hello
int main() { int i; for(i = 0;i < 10; ++i) { printf("My counter: %d\n", i); sleep(2); } return 0; }