首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用execv后的奇怪行为

调用execv后的奇怪行为
EN

Stack Overflow用户
提问于 2017-02-07 13:19:47
回答 1查看 537关注 0票数 2

我正在尝试使用execv执行命令。在运行这个程序之后,我可以看到语句“将要调用execv!”打印在标准输出上。

我还能看到程序"leaky“的指纹。实际上,除了在if或else块中看不到print语句,即既没有"execv failed!error:“也没有"Successfully valgrind!”之外,一切都正常工作。正打印在输出上。

关于execv,我是不是漏掉了一些显而易见的要点?

代码语言:javascript
复制
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<unistd.h>

int main()
{
   char *args[5] = {"/usr/bin/valgrind", "--leak-check=full", "--log-file=valgrindReport.txt", "./leaky", NULL};
   printf("Going to call execv!\n");
   if(execv("/usr/bin/valgrind", args) < 0)
   {
      printf("execv failed! error: %s\n", strerror(errno));
      return 0;
   }
   else
   {
      printf("Successfully executed valgrind!\n");
   }
   return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-07 18:25:19

如果你得到valgrind的输出,那么显然execve是成功的。如果execve成功,它会用要启动的进程映像替换当前进程映像,并且不会返回。如果execve返回,则它失败。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42082284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档