stat()を使用して、コマンドラインで指定されたファイルまたはディレクトリのサイズを見つける必要があります。ファイル(相対パスと絶対パスの両方)に対しては正常に機能しますが、ディレクトリを指定すると、常にサイズが512または1024として返されます。
ディレクトリ内のファイルを印刷すると、次のようになります。
Name : .
Name : ..
Name : new
Name : new.c
ただし、実際にはnewファイルとnew.cファイルのみが含まれています。このため、ディレクトリにさらにファイルを配置しても、サイズは512として返されます。これが私のコードフラグメントです:
if (stat(request.data,&st)>=0){
request.msgType = (short)0xfe21;
printf("\n Size : %ld\n",st.st_size);
sprintf(reply.data,"%ld",st.st_size);
reply.dataLen = strlen(reply.data);
}
else{
perror("\n Stat()");
}
}
どこで私は間違えましたか???
これが私のリクエスト、返信の構造です:
struct message{
unsigned short msgType;
unsigned int offset;
unsigned int serverDelay;
unsigned int dataLen;
char data[100];
};
struct message request,reply;
UNIXOSのgccコンパイラで実行します。