You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C语言execvp函数时重定向输出到文件无内容问题

C语言Shell模拟程序中execvp输出重定向文件无内容的解决方法

在C语言实现Shell命令执行模拟程序时,尝试将execvp函数的输出重定向到文件,终端直接运行时输出正常,但重定向到output.txt后文件无内容。相关代码如下:

int file = open("output.txt", O_WRONLY | O_CREAT);
if (file == -1) {
    perror("open");
    exit(EXIT_FAILURE);
}
if (dup2(file, STDOUT_FILENO) == -1) {
    perror("dup2");
    exit(EXIT_FAILURE);
}
char* command1= "grep";
char* myList[]={"grep", "URL", NULL};
close(file);
execvp(command1, myList);
perror("execvp");
exit(EXIT_FAILURE);

解决方案

问题根源是未关闭管道的读写端,导致子进程输出无法正确刷新到文件。需要在dup2函数调用后添加以下代码关闭管道两端:

close(fd[0]);
close(fd[1]);

内容的提问来源于stack exchange,提问作者Fluffy Gazelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:54:54