system
機能を使用しないで、ls
コマンドをC言語で実装しようとしています。ディレクトリ権限を取得するC関数はありますか?
ディレクトリ/ファイルアクセス権を取得するためのC関数はありますか?
ありがとうございました。
system
機能を使用しないで、ls
コマンドをC言語で実装しようとしています。ディレクトリ権限を取得するC関数はありますか?
ディレクトリ/ファイルアクセス権を取得するためのC関数はありますか?
ありがとうございました。
stat()
を参照してください。あなたはLinuxやPOSIXシステムのように聞こえるので、そうするべきです。
はその後struct stat
のst_mode
フィールドを見て、それが(設定を変更chmod
コマンドによって反映されるように)、多くの場合、総称して、ファイルの「モード」と呼ばれている保護ビット、に関する情報が含まれています。
バイナリビットからls 'のようなテキスト表現に行くのは興味深い課題です。
の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 coreutilsのls
ソースコードを実際に調べるには、どうすればいいですか?しかし、それだけを使って自分を教育してください。それはGPLだから、あなた自身の目的のためだけにそれをつかむことはできません。もしこれが宿題であれば、これに似ているようなものを入れれば、あなたの教育者はあなたにほとんど失敗するでしょう。
こんにちは、 'ls -l'コマンドを実行するためのサンプル 'c'プログラムを私にくれますか? ありがとう –
いいえ、自分でも試したことがないからです。私は人々が学び、彼らのために仕事をするのを助けるためにここにいる。 – paxdiablo