execv会在前台或后台运行吗?

时间:2011-04-27 01:25:03

标签: c++ process execv

我的程序中有这个:

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

我不确定命令是否实际上正确执行。我该怎么知道?这是在后台运行吗?

4 个答案:

答案 0 :(得分:3)

我强烈建议您购买一本与您尝试的任务相关的书。如果你在每一步都提出关于SO的新问题,这将是一条漫长的道路。我们很乐意提供帮助,但有时书籍会更好。

Advanced UNIX Programming是一个非常出色的包含shell的完整示例,包括管道。事实上,示例程序可以免费下载(但我建议你拿起书的副本)。

答案 1 :(得分:2)

由于execv替换当前进程,该命令将在与父进程相同的状态下运行。

知道命令是否执行的一种方法是使命令在控制台上打印一些内容(如果可能)。

答案 2 :(得分:1)

我相信execv()应该用“programname”覆盖当前进程。如果你想在一个单独的进程中运行一个程序,你需要fork()或system() - 我不相信后者是“标准的”,但它似乎相当普遍。

答案 3 :(得分:1)

来自execv的手册页

  

返回值          如果任何exec()函数返回,则会发生错误。返回值为-1,并且将设置errno以指示错误。

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