16

基本的に、クラス用の UNIX ls コマンドのクローンを作成する必要があり、ほとんどすべてが機能しています。ファイルがシンボリック リンクかどうかを確認する方法がわかりません。のマニュアルページから、値が定義されstat()ていることがわかります。mode_tS_IFLNK

これは、ファイルがシンボリックリンクであるかどうかを確認しようとしている方法ですが、運が悪いです(注意、stbufはstat()inodeデータを返すバッファです):

switch(stbuf.st_mode & S_IFMT){
    case S_IFLNK:
        printf("this is a link\n");
        break;
    case S_IFREG:
        printf("this is not a link\n");
        break;
}

私のコードは常に印刷this is not a linkされますが、実際の ls コマンドがそう言っているので、上記のファイルがシンボリックリンクであることを知っています。さらに、シンボリックリンクを作成しました...

誰かが私が間違っているかもしれないことを見つけることができますか? 助けてくれてありがとう!

4

1 に答える 1

27

できません。

リンク自体を統計するために使用する必要がありますlstat()。プレーンstat()はリンクをたどるので、リンク自体を「見る」ことはありません。

于 2010-04-14T08:39:07.297 に答える