2011-09-30 40 views
1

當我再次啓動時鉻它已經開始了,我可以看到以下內容:如何克隆自己的一個實例,比如Chromium呢?

%>鉻瀏覽器
在現有的瀏覽器會話中創建新的窗口。

在C++中是否有任何通用的方法來做類似的事情?或者它就像C++中的「新」功能,只需克隆另一個對象?我很困惑。

+0

什麼讓你覺得有什麼事要克隆有用嗎?克隆表明曾經有一樣東西,現在又有一個相同的副本。這不是你所描述的。克隆瀏覽器實例意味着你會得到第二組標籤,同樣在第一個瀏覽器窗口中添加這些標籤。 –

回答

4

它在C++中完全沒有像「新」一樣:它處於更高層次。當新進程啓動時,它會查找現有進程,如果找到它,它會發送一條命令來創建一個新窗口,然後退出。該命令的語法和性質是特定於應用程序(或應用程序框架)的,因爲發現現有實例的機制也是如此。

+1

更多詳細信息:一種常見的方法是將正在運行的進程的PID存儲在某處(可能位於/ tmp/my_app_name中)。當應用程序重新啓動時,它會在此位置查找PID,並聯系相關的進程。 – Simon

0

一種方法是使用fork()系統調用來創建一個與父進程相同的新進程。新進程將具有不同的進程ID(PID)。在Chrome瀏覽器的情況下,如果您查看任務管理器(Windows)或「ps」命令(Linux)的輸出,則可以看到一旦您打開一個新選項卡,這是一個新的PID過程。

下面的鏈接將是理解fork()的

http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html