Linux システムのファイル タイプを調べる: 通常のファイル、ディレクトリ、特殊ファイル

王林
リリース: 2024-06-27 10:58:25
オリジナル
921 人が閲覧しました

探索 Linux 系统中的文件类型:普通文件、目录与特殊文件

以下のセクションでは、Linux で C 言語を開発する際の I/O を実行する基本的な機能について説明します。 Linux システムにはいくつかのファイル タイプがあります。ただし、例を試している過程で、Linux システムにはいくつかのファイル タイプがあり、それらはすべて通常のファイルを中心に展開しています。

linux系统有几种文件类型_linux典型文件系统类型_linux特有的文件系统Linuxのファイルタイプ

セクション 9 で、Unix システム (Linux は Unix に似たシステム) が「すべてはファイルである」とどのように考えるかについて話したのを覚えていますか? Unix システムのほとんどのファイルは通常のファイルとディレクトリであり、これら 2 種類のファイルは、たとえば、/usr ディレクトリとその上の hello.txt テキスト ファイルも最も一般的に使用されます。

実際、Linux site:infoq.cn では、Linux システムはすべてのファイルを次のカテゴリに分割します。

Linuxシステム内のデバイス(ハードディスク、パラレルポートなど)は、ブロックスペシャルファイルかキャラクタスペシャルファイルのどちらかであるようです。

Linux でファイルの種類を取得する

Linux には、ファイルの統計情報を取得する関数 stat シリーズが提供されています。 Linux で manstat と入力すると、stat 関数の使用ガイドが表示されます:

linux系统有几种文件类型_linux典型文件系统类型_linux特有的文件系统

stat 関数の 2 番目のパラメーターは構造体であり、その定義は次の場所にあります。 linux系统有几种文件类型_linux特有的文件系统_linux典型文件系统类型

リーリー

linux特有的文件系统_linux系统有几种文件类型_linux典型文件系统类型

ユーザーグループID、ユーザーID、ファイルサイズなど、ファイルに関するさまざまな情報を取得できるのは統計関数statのみであることがわかります。 st_mode メンバーは、ファイルのタイプとモード (アクセス許可) を記録します。ファイルの種類を取得するには、次のマクロを使用します: linux典型文件系统类型_linux系统有几种文件类型_linux特有的文件系统

リーリー

C言語の例、Linuxファイルタイプを取得するlinux特有的文件系统_linux系统有几种文件类型_linux典型文件系统类型

晓得了stat函数和以上几个宏,编撰C语言程序获取文件的类型是便捷的:

#include 
#include 
#include 
#include 
int main(int argc, char* argv[])
{
 if(argc < 2){
 printf("ntusage:");
 printf("ntt%s filepathn", argv[0]);
 return -1;
 }
 struct stat tmp;
 char* res;
 lstat(argv[1], &tmp);
 if(S_ISREG(tmp.st_mode))
 res = "regular";
 else if(S_ISDIR(tmp.st_mode))
 res = "directory";
 else if(S_ISBLK(tmp.st_mode))
 res = "block";
 else if(S_ISLNK(tmp.st_mode))
 res = "link";
 else if(S_ISFIFO(tmp.st_mode))
 res = "fifo";
 else if(S_ISSOCK(tmp.st_mode))
 res = "socket";
 else
 res = "unknown";
 printf("%s : %sn", argv[1], res);
 return 0;
}
ログイン後にコピー

以上代码使用了lstat函数,而不是stat函数,它俩的功能是相同的。惟一不同之处在于处理符号链接时,lstat是将该符号链接直接作为文件处理的,而stat函数则是处理该符号链接指向的文件。

linux特有的文件系统_linux系统有几种文件类型_linux典型文件系统类型

编译以上代码,执行之:

# gcc t6.c
# ./a.out 
 usage:
 ./a.out filepath
# ./a.out ../
../ : directory
# ./a.out t.c
t.c : regular
root@lcc:/lccRoot/C/tmp# ./a.out ../
../ : directory
# ./a.out /dev/log
/dev/log : socket
#
ログイン後にコピー

linux典型文件系统类型_linux特有的文件系统_linux系统有几种文件类型

程序接收一个参数,并返回该参数的类型。其他几种类型文件的测试留给读者,在这一过程中可以顺便了解一下linux中的文件组成。

欢迎在评论区一起讨论linux文本编辑器,指责。文章都是手打原创,每晚最扼要的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以见到最新更新和之前的文章哦。

以上がLinux システムのファイル タイプを調べる: 通常のファイル、ディレクトリ、特殊ファイルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:itcool.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート