1.函式stat,fstat,lstat,fststat
int stat(const char *restrict pathname, struct stat *restrict buf);
int fstat(int fd, struct stat *buf);
2.檔案型別:
普通檔案,目錄檔案,塊特殊檔案,字元特殊檔案(系統中的裝置屬於這兩種),fifo,套接字,符號鏈結。
**是檢視檔案型別。
#include "apue.h"
int main(int argc, char *argv)
if(s_isreg(buf.st_mode))
ptr = "regular";
else if(s_isdir(buf.st_mode))
ptr = "directory";
else if(s_ischr(buf.st_mode))
ptr = "character special";
else if(s_isblk(buf.st_mode))
ptr = "block special";
else if(s_isfifo(buf.st_mode))
ptr = "fifo";
else if(s_issock(buf.st_mode))
ptr = "socket";
else if(s_islnk(buf.st_mode))
ptr = "symbolic link";
else
ptr = "** unknown mode **";
printf("%s\n", ptr);
}exit(0);
}
3.access和faccessat(按照實際使用者id和實際組id進行訪問許可權設定)
int access(const char* pathname, int mode);
4.umask函式為程序設定檔案模式建立遮蔽字
mode_t umask(mode_t cmask)
#include "apue.h"
#include #define rwrwrw (s_irusr | s_iwusr | s_irgrp | s_iwgrp | s_iroth | s_iwoth)
int main(void)
5.chmod,fchmod,fchmodat;(更改檔案的訪問許可權)
int chmod(const char* pathname, mode_t mode);
#include "apue.h"
int main(void)
6.chown,fchown,fchownat,lchown(更改檔案的使用者id和組id)
int chown(const char* pathname, uid_t owner, gid_t group);
7.檔案截斷。(truncate和ftruncate函式)
int truncate(const char* pathname, off_t length);
將檔案長度截斷為length,如果長度大於length,則超過的部分就不能被訪問;如果長度小於length,則會形成空洞。
8.link,linkat,unlink,unlinkat,remove
建立乙個現有檔案的鏈結
int link(const char* existingpath, const char* newpath);
刪除乙個現有的目錄項
int unlink(const char* pathname);
9.rename和renameat函式
對檔案或者目錄進行重新命名操作。
int rename(const char* oldname, const char* newname);
10.建立和讀取符號鏈結
int symlink(const char* actualpath, const char* sympath); //建立了乙個指向actualpath的新目錄項sympath。
開啟符號鏈結
ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize);
11.檔案時間
ls命令按這3個時間值中的乙個排序進行顯示。系統預設(-l或-t)是按檔案的修改時間的先後排序顯示,-u是按訪問時間排序,-c是按狀態更改時間排序。st_atim最後訪問時間,st_mtim最後修改時間,st_ctim表示i節點狀態最後更改時間。
12.futimens,utimensat,utimes函式。
用於乙個檔案的訪問和修改時間的更改。
#include "apue.h"
#include int main(int argc, char* argv)
if((fd = open(argv[i], o_rdwr | o_trunc)) < 0)
times[0] = statbuf.st_atim;
times[1] = statbuf.st_mtim;
if(futimens(fd, times) < 0)
err_ret("%s: futimens error", argv[i]);
close(fd);
}exit(0);
}
13.目錄建立和刪除(mkdir,mkdirat,rmdir)
int mkdir(const char* pathname, mode_t mode);
14.讀目錄
dir *opendir(const char* pathname);
dir *fdopendir(int fd);
struct dirent *readdir(dir *dp);
void rewinddir(dir *dp);
int closedir(dir *dp);
long telldir(dir *dp);
void seekdir(dir *dp, long loc);
#include "apue.h"
#include #include typedef int myfunc(const char*, const struct stat*, int);
static myfunc myfunc;
static int myftw(char* , myfunc*);
static int dopath(myfunc*);
static long nreg, ndir, nblk, nchr, nfifo, nslink, nsock, ntot;
int main(int argc, char* argv)
#define ftw_f 1 /* file other than directory */
#define ftw_d 2 /* directory */
#define ftw_dnr 3 /* directory that can't be read */
#define ftw_ns 4 /* file that we can't stat */
static char* fullpath; /* contain full pathname for every file */
static size_t pathlen;
static int myftw(char *pathname, myfunc *func)
strcpy(fullpath, pathname);
return (dopath(func));
}static int dopath(myfunc *func)
fullpath[n ++] = '/';
fullpath[n] = 0;
if((dp = opendir(fullpath)) == null)
return (func(fullpath, &statbuf, ftw_dnr));
while((dirp = readdir(dp)) != null)
fullpath[n - 1] = 0;
if(closedir(dp) < 0)
err_ret("can't close directory %s", fullpath);
return ret;
}static int myfunc(const char* pathname, const struct stat *statptr, int type)
break;
case ftw_d:
ndir++;
break;
case ftw_dnr:
err_ret("can't read directory %s", pathname);
break;
case ftw_ns:
err_ret("stat error for %s", pathname);
break;
default:
err_dump("unknown type %d for pathname %s", type, pathname);
}return 0;
}
15.更改當前工作目錄。
chdir,fchdir,getcd。
int chdir(const char* pathname);
int fchdir(int fd);
char* getcwd(char* buf, size_t size);
APUE 第四章檔案和目錄
本章內容較多,本文只記錄在學習過程中所發現的問題,同時記錄所需掌握的linux方面知識.檔案型別 普通檔案 目錄檔案 塊特殊檔案 字元特殊檔案 fifo 套接字 符號鏈結 這裡要介紹下dos2unix命令,剛好前幾天在工作中有所接觸。dos2unix命令用來將dos格式的文字檔案轉換成unix格式的...
APUE 第四章 檔案和目錄
本章主要圍繞stat這個函式來講的。int stat const char pathname,struct stat buf int fstat int fd,struct stat buf int lstat const char pathname,sttuct stat buf 如果是符號鏈結,...
APUE筆記 第四章 檔案和目錄
功能 給定乙個pathname,stat函式返回乙個與此命名檔案有關的資訊結構,fstat函式獲得已在描述符filedes上開啟的檔案的有關資訊。lstat函式類似於stat,但是當命名的檔案是乙個符號連線時,lstat返回該符號連線的有關資訊,而不是由該符號連線引用的檔案的資訊。1 普通檔案 re...