将execv在前台或后台运行

Will execv run this in the foreground or background?

本文关键字:后台 运行 前台 execv      更新时间:2023-10-16

我的程序中有这个:

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

我不确定命令是否被正确执行。我怎样才能知道呢?这是在后台运行吗?

我强烈建议你找一本与你要做的任务相关的书。如果你在每一步都问一个关于SO的新问题,这将是一条很长的路。我们乐于助人,但有时书本更好。

Advanced UNIX Programming是一个很好的例子,它包含了一个完整的shell示例,包括管道。实际上,示例程序可以免费下载(但我还是建议您购买本书的副本)。

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

知道命令是否被执行的一种方法是,如果可能的话,让命令在控制台上打印一些东西。

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

来自execv的手册页。

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

所以,如果你得到一个返回值,说明出了问题