我的程序中有这个:
execv (programname, (char **)argv);
我不确定命令是否实际上正确执行。我该怎么知道?这是在后台运行吗?
答案 0 :(得分:3)
我强烈建议您购买一本与您尝试的任务相关的书。如果你在每一步都提出关于SO的新问题,这将是一条漫长的道路。我们很乐意提供帮助,但有时书籍会更好。
Advanced UNIX Programming是一个非常出色的包含shell的完整示例,包括管道。事实上,示例程序可以免费下载(但我建议你拿起书的副本)。
答案 1 :(得分:2)
由于execv替换当前进程,该命令将在与父进程相同的状态下运行。
知道命令是否执行的一种方法是使命令在控制台上打印一些内容(如果可能)。
答案 2 :(得分:1)
我相信execv()应该用“programname”覆盖当前进程。如果你想在一个单独的进程中运行一个程序,你需要fork()或system() - 我不相信后者是“标准的”,但它似乎相当普遍。
答案 3 :(得分:1)
来自execv的手册页
返回值 如果任何exec()函数返回,则会发生错误。返回值为-1,并且将设置errno以指示错误。
所以,如果你得到一个返回值,那就出错了。