2011-04-27 24 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重定向到管道。