2011-04-27 71 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将被设置为指示错误。

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