這是我以前的question的續作。我正在使用fork來創建子進程。裏面的孩子,我給命令來運行如下的過程:分叉子程序所用的時間
if((childpid=fork())==0)
{
system("./runBinary ");
exit(1)
}
我runBinary具有測量它從開始多少時間到結束的功能。
令我感到驚訝的是,當我直接在命令行上運行runBinary時,大約需要60秒。但是,當我將它作爲子進程運行時,它需要更多,例如~75或更多。有什麼我可以做或者我現在做錯了,這是導致這一點?
感謝您的幫助提前。 更多詳細信息:我正在使用24核心的Linux RHEL服務器上運行。我正在測量CPU時間。一次,我只使用taskset(未在代碼中顯示)分叉8個孩子(按順序),每個孩子綁定到不同的核心。系統除了我自己的程序外沒有加載。
也許需要15秒,你的睡眠父進程得到由O/S喚醒孩子退出後? – 2012-04-10 01:45:23
@JonathanLeffler你能告訴如何確認嗎?謝謝 – user984260 2012-04-10 01:47:32
@sarnold實際上它是運行二進制,它本身就是測量時間。 – user984260 2012-04-10 01:50:12