【发布时间】:2012-11-28 02:08:00
【问题描述】:
我正在尝试将 File1.txt ">" File2.txt 作为终端参数传递给我的程序,以覆盖 cat 命令。但由于某种原因,该程序无法正常工作。尽管在上述定义的情况下 argc 为 4,但程序中的条件仍然不成立。代码如下:
int main(int argc, char *argv[])
{
int readbytes,fp;
char buf[1024];
if(argc==2)
{
fp=open(argv[1],O_RDONLY);
dup2(0,fp);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
write(STDOUT_FILENO,buf,readbytes);
}
if(argc==4)
{
printf("inside4");
fp=open(argv[1],O_RDONLY);
dup2(fp,0);
close(fp);
fp=open(argv[3],O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU);
dup2(fp,1);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
//printf("%c",buf);
write(STDOUT_FILENO,buf,readbytes);
}
return 0;
}
我找不到这个问题的解决方案,所以我现在把它留给专家。这个问题的原因是什么?
注意:
由于某种原因,当我将 ./prog File1.txt > File2.txt 发送到程序时,选择了argc==2 条件,但 argc 为 4。这是为什么?
问候
【问题讨论】:
-
首先使用
\>转义>。第二次在main()中打印出argv。 -
./prog File1.txt > File2.txt与./prog File1.txt ">" File2.txt不同。