我试图将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。这是为什么?
问候