2009-05-12 3 views

答えて

2

stat()を参照してください。あなたはLinuxやPOSIXシステムのように聞こえるので、そうするべきです。

はその後struct statst_modeフィールドを見て、それが(設定を変更chmodコマンドによって反映されるように)、多くの場合、総称して、ファイルの「モード」と呼ばれている保護ビット、に関する情報が含まれています。

バイナリビットからls 'のようなテキスト表現に行くのは興味深い課題です。

3

のstat()システムコールは、ファイル名の文字列を受け取り、以下の構造を返します。

struct stat { 
    dev_t  st_dev;  /* ID of device containing file */ 
    ino_t  st_ino;  /* inode number */ 
    mode_t st_mode; /* protection */ 
    nlink_t st_nlink; /* number of hard links */ 
    uid_t  st_uid;  /* user ID of owner */ 
    gid_t  st_gid;  /* group ID of owner */ 
    dev_t  st_rdev; /* device ID (if special file) */ 
    off_t  st_size; /* total size, in bytes */ 
    blksize_t st_blksize; /* blocksize for filesystem I/O */ 
    blkcnt_t st_blocks; /* number of blocks allocated */ 
    time_t st_atime; /* time of last access */ 
    time_t st_mtime; /* time of last modification */ 
    time_t st_ctime; /* time of last status change */ 
}; 

これは、ディレクトリエントリに同様に動作だけでなく、ファイルやst_modeは、あなたが探している特定のフィールドであります。

<sys/stat.h>ヘッダーファイルは、その構造体とすべての定義を#definesおよび/またはフィールドをインテリジェントにデコードするためのマクロとともに含める必要があります(hereのサンプルを参照)。

GNU coreutilslsソースコードを実際に調べるには、どうすればいいですか?しかし、それだけを使って自分を教育してください。それはGPLだから、あなた自身の目的のためだけにそれをつかむことはできません。もしこれが宿題であれば、これに似ているようなものを入れれば、あなたの教育者はあなたにほとんど失敗するでしょう。

+0

こんにちは、 'ls -l'コマンドを実行するためのサンプル 'c'プログラムを私にくれますか? ありがとう –

+4

いいえ、自分でも試したことがないからです。私は人々が学び、彼らのために仕事をするのを助けるためにここにいる。 – paxdiablo

関連する問題