如果在我的代碼中,我要調用execv,然後在調用execv之後我有幾行代碼,這些行會被執行,還是不會被執行,因爲無論由execv啓動了什麼,都會替換當前進程?execv是否會像這樣取代當前進程?
回答
它們不會被執行,除非execv()
調用失敗。 execv()
完全取代了調用它的進程中運行的程序。
我注意到這通常是這種情況,但是如果我用execv運行睡眠,那麼它將繼續執行以下行。這是爲什麼? – 2011-04-27 04:49:10
@ z-buffer,如果'execv()'返回,則表示失敗;如果你檢查返回值,你會發現它是-1。看'errno'找出原因。但是,無論如何,fork和exec睡眠程序都沒有什麼意義 - 子進程不會做任何事情,除非存在一段時間。如果你讓父母等待它實現一個延遲,只需使用'sleep()'函數。 – Wyzard 2011-04-27 04:56:56
他們不會得到執行,除非你分叉線程並在其中一個上調用execv。
即使在這種情況下。 POSIX表示:「對於具有多個線程的進程調用任何* exec *函數將導致所有線程被終止,並且新的可執行映像被加載並執行。」 – Wyzard 2011-04-27 04:33:20
好的。感謝您的提醒! – 2011-04-27 04:39:05
取決於execve後面的代碼是否是fork()調用後的if/else/switch-case分支。
- 1. 如何確定進程句柄是否是當前進程?
- 2. C execv()函數是否終止子進程?
- 3. 獲取ID?像SharePoint這樣的當前用戶可以嗎?
- 4. 這是否會取消ExecuteReaderAsync
- 5. 當用UINavigationController返回時,是否有像prepareForSegue這樣的東西?
- 6. 像Haddop中的FileSplit這樣的分割是否會改變塊?
- 7. 是否有像這樣的jQuery工具?
- 8. 是否有像java.awt.Polygon這樣的codenameone類?
- 9. 是否有像datedate2這樣的函數?
- 10. parseInt()是否應該像這樣工作?
- 11. Eclipse是否有像Coda這樣的代碼片段插件?
- 12. Java的線程是否像Linux上的進程一樣工作?
- 13. 是否Response.Expires = 0終止當前會話?
- 14. execv會在前臺還是後臺運行?
- 15. 像這樣守護進程的目的是什麼?
- 16. 獲取當前活動會話的所有進程
- 17. 從mysql查詢中獲取當前會話/進程ID
- 18. ASP.NET是否具有像ASP這樣的變量和過程?
- 19. 是否有像「Codea」這樣的應用程序,但對於MonoTouch?
- 20. Swift程序是否真的像這樣部署?
- 21. 是否同步駐留像Lock.lock()這樣的併發線程?
- 22. 是否有像KimonoLabs這樣的刮板應用程序?
- 23. 這段代碼是否會返回false?
- 24. 如何確定進程是否爲當前活動/前臺應用程序
- 25. 從DLL獲取當前進程ID
- 26. 獲取的hWnd從當前進程
- 27. 可可/ ObjC:獲取當前進程
- 28. 黑莓 - 獲取當前進程ID
- 29. ms C++獲取當前進程的pid
- 30. 函數來獲取當前進程UNIX
我重新標記此刪除C++,並添加了POSIX和系統調用鍵。對於execv *(),沒有任何C和C++的具體內容。 – 2011-04-27 04:34:07