gpt4 book ai didi

c - 调用 execv 后的奇怪行为

转载 作者:太空狗 更新时间:2023-10-29 11:35:47 27 4
gpt4 key购买 nike

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

我还可以看到程序“leaky”的打印件。实际上一切都按预期工作,除了我在 if 或 else block 中看不到打印语句,即既没有“execv 失败!错误:”也没有“成功执行 valgrind!”正在输出上打印。

我是否遗漏了一些关于 execv 的明显要点?<​​/p>

#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;
}

最佳答案

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

关于c - 调用 execv 后的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com