情況如下:我分叉進程以使用默認瀏覽器打開html文件。這裏是如何看起來在我的情況:獲取由xdg-open創建的進程的PID
if ((pid=fork())==0) {
execlp("/usr/bin/xdg-open", "xdg-open", url, NULL);
/*if execlp failed, exit the child*/
exit(0);
}
不過,我想要得到的過程(打開瀏覽器)的PID的保持,這樣我就可以關閉它以後了。但我似乎不知道我怎麼能得到它。如果您有任何建議,請告訴我。
我不這麼認爲。子進程將運行xdg-open。但是,如果我理解正確,瀏覽器將在另一個進程中打開。所以PID將會不同。 – elena
@elena:從man 3 exec':'exec()系列函數用新的過程映像替換當前過程映像.'作爲替換,不需要創建新過程,因此不需要新過程-id被分配。 – alk
是的,我閱讀手冊頁。但是,如果你看看我的例子:execlp(「/ usr/bin/xdg-open」,「xdg-open」,url,NULL),你會看到xdg-open是被替換的過程映像。反過來,xdg-open會打開瀏覽器(因爲url是一個html頁面)。瀏覽器將運行在一個新的過程中。所以我需要這個過程的PID。 – elena