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