Red Hat Linuxでcatコマンドをシミュレートしようとしています。プログラムを実行すると、セグメンテーション違反が発生します。
例えば:
./a.out a > b
a
こんにちはが含まれています。hello が にコピーされることを期待していb
ます。
私のコードは次のとおりです。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char *argv[])
{
int f, fd, r;
char buf[100];
if (argc < 2)
{
printf("Error");
return 0;
}
else
{
if (!strcmp(argv[2],">"))
{
f = open(argv[1],0,00777);
if (f == -1)
printf("no file");
else
{
fd = creat(argv[3],00777);
while( (r = read(f,buf,50)) > 0)
write(fd, buf, r);
}
}
}
return 0;
}
セグメンテーション エラーが発生するのはなぜですか?
同じ方法でファイルを開いて作成する同様のプログラムがあり、そのプログラムが実行されていますが、これによりセグメンテーション違反が発生しています。