2011-04-27 21 views
0

我正在使用fork和execv來產生子程序。我怎樣才能讓這些程序在後臺運行?我試圖不等他們,但他們仍然發送輸出到屏幕上。如何用execv產生後臺程序

+0

你對「背景」的定義是什麼? – Gabe 2011-04-27 08:22:14

+0

在後臺運行進程與program&相同。 – 2011-04-27 08:24:12

+0

您的術語不一致 - '程序&'仍將其輸出寫入屏幕,在這種情況下,「背景」只是釋放shell提示符。 'program>/dev/null&'會做你想做的事 – davka 2011-04-27 08:43:55

回答

3

重定向標準輸出/標準錯誤到/dev/null你以前的exec:

freopen("/dev/null", "w", stdout); 
freopen("/dev/null", "w", stderr); 
exec.... 
+0

我得到這個錯誤:無法將'FILE *'轉換爲'const char *'作爲參數'2'到'FILE * freopen(const char *,const char *,FILE *)' – 2011-04-27 08:28:00

+0

@ z-buffer:爭論,現在糾正了答案。 – Erik 2011-04-27 08:31:02

+0

輸出如何恢復正常? – 2011-04-27 08:48:38

1

您可以使用管道重定向子進程的輸出。看看this queston。有代碼將stdout和stderr重定向到管道。