進程附加

在之前的文章中,我們都是trace自己程序fork出來的子進程,現(xiàn)在我們來看一下如何trace一個正在運行的進程。

trace一個正在運行的進程稱為進程附加(attach)。使用的是ptrace函數(shù)的PTRACE_ATTACH參數(shù)。當(dāng)一個進程成功附加到一個正在運行的進程時,此進程會成為被附加進程的父進程,同時向被附加的進程發(fā)送一個SIGSTOP信號,讓其停止,這時我們就可以對其進行操縱。當(dāng)我們完成對tracee的操作后就可以使用ptrace的PTRACE_DETACH參數(shù)停止附加。

我們用一個循環(huán)來模擬一個正在運行的進程,下邊稱此程序為hello

復(fù)制代碼
int main()
{ int i; for(i = 0;i < 10; ++i) {
        printf("My counter: %d\n", i);
        sleep(2);
    } return 0;
}

網(wǎng)友評論