lseek,可實現計算文件長度,以及文件擴展。
int ret = lseek(fd, 0, SEEK_END); //文件長度printf("file lendth = %d\n", ret);
?
int ret = lseek(fd, 2000, SEEK_END); //文件拓展2000個byte 在文件末尾偏移2000printf("return value %d\n", ret);//實現文件拓展,需要在最后做一次寫操作write(fd, "a", 1);
//最后有原長度加2001大小 a在最后其余為空洞
stat,顯示文件的基礎信息,可作為命令使用(stat english? ? 顯示english文件的信息)
頭文件:<sys/types.h>?<sys/stat.h> <unistd.h>
函數有:int stat(const chat *path, struct stat *buf); //buf為傳出參數? 由于函數向外輸出相應信息
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
stat與lstat的區別是,stat遇到軟連接時追蹤原文件,顯示原文件的大小。lstat顯示軟連接的大小。
struct stat{dev_t st_dev;//文件的設備標號ino_t st_ino;//節點mode_t st_mode;//文件類型和儲存權限nlink_t st_nlink;//硬鏈接數目uid_t st_uid;//用戶IDgid_t st_gid;//組ID ..... }
?
access,測試文件是否擁有某種權限,讀、寫、執行、是否存在
頭文件:<unistd.h>
函數:int access(const char? *pathname, int mode);
mode, R_OK是否讀、W_OK是否寫、X_OK是否可執行、F_OK是否存在
存在為0,失敗為-1
?
chmod,修改文件權限。詳情見man文檔
?
strtol,將字符串轉換為相應進制的數
<stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
nptr為字符串,endptr通常為空,base為想要轉成的進制
?
chown,修改文件所有者
truncate,專門由于拓展文件
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
length,當小于文件長度時街截取文件,保持length大小。大于文件長度時,拓展文件,空洞補填
?
link,創建一個硬鏈接,
int link(const char *oldpath, const char *newpath);
symlink,創建軟連接,參數一侄
?
unlink,刪除鏈接,創建/刪除臨時文件
先用open創建文件open("tempfile", O_CReaT | O_RDWR, 0664);
在文件關閉前調用unlink("tempfile");
當文件被關閉時文件就會被刪除,文件處于打開狀態時無法被刪除,關閉后被unlink