2011-04-27 72 views
1

我有這個在我的程序:execv會在前臺還是後臺運行?

execv (programname, (char **)argv); 

我不知道是否確實被正確執行的命令。我如何知道?這是在後臺運行嗎?

+0

這取決於你在編譯這個代碼的操作系統是DOS還是Windows? – 2011-04-27 01:28:55

+0

我正在編譯OSX。 – 2011-04-27 02:49:14

回答

2

由於execv替換當前過程,該命令將在相同的狀態作爲父進程中運行。如果執行你的命令是要在控制檯上的命令打印的東西,如果有可能知道

的一種方式。

1

我相信execv()應該覆蓋當前進程與「PROGRAMNAME」。如果你想在一個單獨的過程中運行一個程序,你需要fork()或system() - 我不認爲後者是「標準」的,但它似乎相當普遍。

3

我極力推薦的一本書,涉及到你正在試圖做的任務。如果你在每一步的每一步都提出一個關於SO的新問題,那將是一條非常漫長的道路。我們喜歡幫忙,但有時候書更好。

Advanced UNIX Programming是包含外殼,包括管道的完整樣品出色。實際上,示例程序可以免費下載(但我建議您拿起本書的副本)。

1

從execv的手冊頁。

返回值 如果任何exec()函數返回,則會發生錯誤。返回值是-1,並且errno將被設置爲指示錯誤。

所以,如果你得到一個返回值,出事了。