2

ファイルが D で読み取り可能かどうかをどのように判断しますか? Google と D の両方のドキュメントなどを複数回検索しましたが、SO も複数回検索しましたが、特定のファイルが読み取り可能かどうかをテストしても何も見つかりませんでした。理論的には、__freadable を使用して C でそれを行う方法を知っています。D で __freadable を外部呼び出ししようとしましたが、次のリンク エラーが発生しました。

ldc2  -O2 -dw -g -wi -I/usr/include/stdio_ext.h -c ket.d ket.o
ldc2  -O2 -dw -g -wi -I/usr/include/stdio_ext.h -ofket ket.o 
ket.o: In function `_Dmain':
/home/hav3lock/sy.l/repos/pub_rel/ket/ket.d:47: undefined reference to `_D3ket4mainFAAyaZv11__freadableUPOS4core4stdc5stdio6_iobufZi'
collect2: error: ld returned 1 exit status
Error: /usr/bin/gcc failed with status: 1
make: *** [ket] Error 1

DでCのものを呼び出すことについてもう少し読んだところ、どうやらstdio_ext.h Cヘッダー(__freadableが存在する場所)をDヘッダーまたはそのようなものとして書き直す必要があり、その量の作業は私がやろうとしていること。

特定のファイルが読み取り可能かどうかを調べて、ファイルが存在するかどうか、また読み取り可能かどうかを一度に判断できるようにしたいだけです。私がこの吸盤をbashで書いていたら、私はただ使うだろう

[[ -r FILE ]] 

FILE が存在するかどうかをテストし、それに対する読み取り許可が付与されているかどうかをテストしますが、D で同等のことを行う方法がわかりません...何かアイデアはありますか?


getAttributes を使用しようとしましたが、D は次のように不平を言います:

no property 'getAttributes' for type 'File'

getAttributesの使用方法は次のとおりです

    auto file_a = File(proc_auto[hdex], "r");
    writeln(file_a.getAttributes);
4

1 に答える 1