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;
}
この問題の解決策が見つからなかったので、今は専門家に任せています。この問題の理由は何ですか?
ノート:
何らかの理由で./progFile1.txt>File2.txtをプログラムに送信すると、argc==2
条件が選択されますが、argcは4です。これはなぜですか。
よろしく