linux学習2
6800 ワード
レコードエントリ
記録項目は等しくない.レコードしたい(inode番号ファイル名サブファイルタイプ.ファイル長)
ファイルの種類は次のとおりです.
stat
stat構造体
この関数は主にファイルinodeのプロパティを取得します.
≪インスタンス|Instance|emdw≫
端末でこの関数を呼び出すとファイルのプロパティが取得されます
インスタンスの適用
*int main(int argc,char argv[])については、このようなargcはコマンドライン全体のパラメータ個数であり、ここで0番目のパラメータはプログラム名以降のパラメータであり、コマンドラインユーザが入力した消去argv[]は文字配列であり、int argc配列の各要素が1つのパラメータであるargcはユーザ入力パラメータを記録した個数argv[]は文字ポインタargv[0]であり、通常は実行可能ファイルのファイル名を指す
実行可能なプログラムを呼び出す場合、実行可能なプログラムにパラメータを入力する必要がある場合があります.例えば、コンソールにnotepadを入力します.exeは車に戻るとメモ帳を開きます.メモ帳プログラムを開くときに同時にメモ帳ファイルを開くにはnotepadが必要です.exeの後ろにメモ帳のファイルnotepadを追加します.exe ddda.txt(ファイルパス)では、ファイルはどのようにこれらの入力パラメータを得るのでしょうか.この仕事はコンパイラが私たちに入力したパラメータをmian関数のパラメータリストに置くmain関数が私たちの入力パラメータを保存した情報です.最初のパラメータargcはパラメータの個数を記録しました.2番目のパラメータは文字ポインタ配列でnotepadです.exe dd.txt . 例argcは2であるargv[]配列に2つのパラメータがある第1ユニットの郷はnoteappである.exe . 2番目のパラメータはdd.txtを指します
argv配列の最初のセルが指す文字列は常に実行可能なプログラムの名前であり,以降のセルが指す文字列はプログラム呼び出し時のパラメータの順である.
この付与プロセスはコンパイラで完了し、データを読み出すだけでいいです.
int fstat(int fd, struct stat *buf);この関数はパスをファイル記述子に変換します.パスをファイル記述子に変えました(ファイル記述子は何ですか?私の次の文章を見てください)
int lstat(const char *path, struct stat *buf); この関数はどういう意味ですか.これはシンボルリンクstatという関数がシンボルリンクを追跡しないことです.(ショートカット)
access
この関数は,アクセス権限の有無を検出する実際のユーザid有効ユーザidである.
chmod
まだ見ていません------権限ビットを修正します.
link
ファイルのハード接続を作成します.ファイルのハード接続を作成rm削除ファイルがフォルダの下のレコード項目inodeを削除するハード接続である場合1を減らします.Inodeのハード接続技術がゼロに減少するとblockブロックはゼロに反転します
rename
名前を変更するという意味です.
chdir
現在のプロセスの作業ディレクトリを変更
getcwd
現在の作業ディレクトリの取得
ディレクトリに入るのは、このappのプロセスがディレクトリに入るだけです.このappプロセスは受け入れられた後、shellのプロセスが存在するディレクトリファイルに戻ります.
mkdirという関数はディレクトリを生成することです
opendir
ディレクトリ名を開く
DIR*このタイプのポインタは、ディレクトリがディレクトリを指す最初のエントリを指します.
これは、次のディレクトリの読み取りを開始するコンテンツを開きます.
readdir
ディレクトリポインタからディレクトリ内のエントリを読み取るポインタはレコードエントリポインタですこのポインタはどんなものですか
私たちは主にファイルのinode号のファイル名が何なのか、またファイルのタイプが何なのかに注目しています.この関数を利用して読み込むと、DIR*ポインタが自動的に次のファイルの末尾に記録され、NULLアドレスinodeが設定されるかどうかを後悔します.
rewinddir
この関数はDIR*ポインタがディレクトリの先頭に戻ります
telldir
このディレクトリポインタが指す位置を返します
seekdir
ディレクトリポインタをその位置に設定する
closedir
このディレクトリを閉じる
ケース再帰スキャンディレクトリ
仮想ファイルシステム
仮想ファイルシステムはlinuxシステムに様々なファイルシステムを読み取る抽象層である.各ファイルシステムに抽象層を再カプセル化することです
dup
この関数は、2つのファイル記述子が同じfile構造体だけを望んでいるように、1つのファイル記述子をコピーします.file構造体を指す
file構造体の参照数は2です.file構造体の参照カウントは2になります.file構造体参照i火速が2 close関数になるのは、file構造体の参照カウントを1減らしてファイルを開くだけです.ファイル構造体を生成します.ファイル構造体を解放しないと、メモリが漏れてしまいます.
記録項目は等しくない.レコードしたい(inode番号ファイル名サブファイルタイプ.ファイル長)
ファイルの種類は次のとおりです.
stat
#include
#include
#include
int stat(const char *path, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
stat構造体
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number inode */
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 file system I/O block */
blkcnt_t st_blocks; /* number of 512B blocks allocated 4096 8 */
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 */
};
この関数は主にファイルinodeのプロパティを取得します.
≪インスタンス|Instance|emdw≫
File: `rendd.me'
Size: 9 Blocks: 8 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 130854 Links: 1
Access: (0664/-rw-rw-r--)/* */ Uid: ( 500/zhangwenyong) Gid: ( 500/zhangwenyong)
Access: 2017-07-19 15:47:24.306000037 +0800/* */
Modify: 2017-07-19 15:47:23.177000038 +0800/* */
Change: 2017-07-19 15:47:23.178000035 +0800/* inode */
端末でこの関数を呼び出すとファイルのプロパティが取得されます
インスタンスの適用
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[]){
struct stat s_buf;
if(argc<2)
{
exit(1);
}
if( stat(argv[1],&s_buf))
{
perror("sss");
exit(1); }
printf("%s",argv[1]);
return 0;
}
*int main(int argc,char argv[])については、このようなargcはコマンドライン全体のパラメータ個数であり、ここで0番目のパラメータはプログラム名以降のパラメータであり、コマンドラインユーザが入力した消去argv[]は文字配列であり、int argc配列の各要素が1つのパラメータであるargcはユーザ入力パラメータを記録した個数argv[]は文字ポインタargv[0]であり、通常は実行可能ファイルのファイル名を指す
実行可能なプログラムを呼び出す場合、実行可能なプログラムにパラメータを入力する必要がある場合があります.例えば、コンソールにnotepadを入力します.exeは車に戻るとメモ帳を開きます.メモ帳プログラムを開くときに同時にメモ帳ファイルを開くにはnotepadが必要です.exeの後ろにメモ帳のファイルnotepadを追加します.exe ddda.txt(ファイルパス)では、ファイルはどのようにこれらの入力パラメータを得るのでしょうか.この仕事はコンパイラが私たちに入力したパラメータをmian関数のパラメータリストに置くmain関数が私たちの入力パラメータを保存した情報です.最初のパラメータargcはパラメータの個数を記録しました.2番目のパラメータは文字ポインタ配列でnotepadです.exe dd.txt . 例argcは2であるargv[]配列に2つのパラメータがある第1ユニットの郷はnoteappである.exe . 2番目のパラメータはdd.txtを指します
argv配列の最初のセルが指す文字列は常に実行可能なプログラムの名前であり,以降のセルが指す文字列はプログラム呼び出し時のパラメータの順である.
この付与プロセスはコンパイラで完了し、データを読み出すだけでいいです.
int fstat(int fd, struct stat *buf);この関数はパスをファイル記述子に変換します.パスをファイル記述子に変えました(ファイル記述子は何ですか?私の次の文章を見てください)
int lstat(const char *path, struct stat *buf); この関数はどういう意味ですか.これはシンボルリンクstatという関数がシンボルリンクを追跡しないことです.(ショートカット)
access
#include
int access(const char *pathname, int mode);
この関数は,アクセス権限の有無を検出する実際のユーザid有効ユーザidである.
chmod
まだ見ていません------権限ビットを修正します.
link
#include
int link(const char *oldpath, const char *newpath);
ファイルのハード接続を作成します.ファイルのハード接続を作成rm削除ファイルがフォルダの下のレコード項目inodeを削除するハード接続である場合1を減らします.Inodeのハード接続技術がゼロに減少するとblockブロックはゼロに反転します
rename
#include
int rename(const char *oldpath, const char *newpath);
名前を変更するという意味です.
chdir
SIS
#include
int chdir(const char *path);
int fchdir(int fd);
現在のプロセスの作業ディレクトリを変更
getcwd
IS
#include
char *getcwd(char *buf, size_t size);
char *getwd(char *buf);
char *get_current_dir_name(void);
現在の作業ディレクトリの取得
ディレクトリに入るのは、このappのプロセスがディレクトリに入るだけです.このappプロセスは受け入れられた後、shellのプロセスが存在するディレクトリファイルに戻ります.
mkdirという関数はディレクトリを生成することです
opendir
ディレクトリ名を開く
#include
#include
DIR *opendir(const char *name);
DIR *fdopendir(int fd);
DIR*このタイプのポインタは、ディレクトリがディレクトリを指す最初のエントリを指します.
これは、次のディレクトリの読み取りを開始するコンテンツを開きます.
readdir
#include
struct dirent *readdir(DIR *dirp);
int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
ディレクトリポインタからディレクトリ内のエントリを読み取るポインタはレコードエントリポインタですこのポインタはどんなものですか
struct dirent {
ino_t d_ino; /* inode number inode */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all file system types 。 */
char d_name[256]; /* filename */
};
私たちは主にファイルのinode号のファイル名が何なのか、またファイルのタイプが何なのかに注目しています.この関数を利用して読み込むと、DIR*ポインタが自動的に次のファイルの末尾に記録され、NULLアドレスinodeが設定されるかどうかを後悔します.
rewinddir
#include
#include
void rewinddir(DIR *dirp);
この関数はDIR*ポインタがディレクトリの先頭に戻ります
telldir
#include
long telldir(DIR *dirp);
このディレクトリポインタが指す位置を返します
seekdir
#include
void seekdir(DIR *dirp, long offset);
ディレクトリポインタをその位置に設定する
closedir
#include
#include
int closedir(DIR *dirp);
このディレクトリを閉じる
ケース再帰スキャンディレクトリ
仮想ファイルシステム
仮想ファイルシステムはlinuxシステムに様々なファイルシステムを読み取る抽象層である.各ファイルシステムに抽象層を再カプセル化することです
dup
int dup(int oldfd);
int dup2(int oldfd, int newfd);
#define _GNU_SOURCE
#include
int dup3(int oldfd, int newfd, int flags);
この関数は、2つのファイル記述子が同じfile構造体だけを望んでいるように、1つのファイル記述子をコピーします.file構造体を指す
file構造体の参照数は2です.file構造体の参照カウントは2になります.file構造体参照i火速が2 close関数になるのは、file構造体の参照カウントを1減らしてファイルを開くだけです.ファイル構造体を生成します.ファイル構造体を解放しないと、メモリが漏れてしまいます.