【发布时间】:2014-10-18 19:50:00
【问题描述】:
我有以下将 infile 连接到 outfile 的简单程序
char *execArgs[] = { "cat", NULL};
int outfile = open("outfile", O_WRONLY | O_CREAT, 0644);
int infile = open("infile", O_RDONLY, 0);
dup2(outfile, STDOUT_FILENO);
dup2(infile, STDIN_FILENO);
close(outfile);
close(infile);
execvp(execArgs[0], execArgs);
现在,假设 infile 的内容是
this is infile
outfile 是
this is outfile
程序运行后,outfile的内容最后多了一个“e”
this is infilee
另外,如果是输出文件
this is outfile
this is outfile
变成了
this is infilee
this is outfile
怎么了?
【问题讨论】:
-
int outfile = open("outfile", O_WRONLY | O_CREAT, 0644);此行导致问题,您只想在 outfile 不存在时创建。