stat() を使用してファイルのサイズを取得する関数は次のとおりです。
off_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
fprintf(stderr, "Cannot determine size of %s: %s\n",
filename, strerror(errno));
return -1;
}
次のようにすることで、ファイルサイズをうまく取得できます。
size = fsize ("byte.bin");
しかし、ローカルディレクトリの下のディレクトリからファイルを取得する必要がある場合、たとえば「deps/src」ディレクトリとしましょう。予期したエラーメッセージが表示されずに途中で停止します。
size = fsize ("deps/src/byte.bin");
関数を使用する小さなプログラムを作成し、byte.bin ファイルを「deps/byte.bin」にコピーし、「deps/byte.bin」で fsize 関数を呼び出すと、「byte.bin のサイズを特定できません」というエラーが表示されます。 : そのようなファイル、又はディレクトリはありません"
「/something/deps/byte.bin」のような絶対パスを使用すると機能します。
私は何を間違っていますか?相対パスに対してこれを行う方法を示しますか?