lseek、stat、access、chmod、strtol、truncate、unlink
lseek,可實現(xiàn)計算文件長度,以及文件擴展。
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);//實現(xiàn)文件拓展,需要在最后做一次寫操作write(fd, "a", 1);//最后有原長度加2001大小 a在最后其余為空洞
stat,顯示文件的基礎信息,可作為命令使用(stat english? ? 顯示english文件的信息)
頭文件:<sys/types.h>?<sys/stat.h> <unistd.h>
函數(shù)有:int stat(const chat *path, struct stat *buf); //buf為傳出參數(shù)? 由于函數(shù)向外輸出相應信息
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
stat與lstat的區(qū)別是,stat遇到軟連接時追蹤原文件,顯示原文件的大小。lstat顯示軟連接的大小。
struct stat{dev_t st_dev;//文件的設備標號ino_t st_ino;//節(jié)點mode_t st_mode;//文件類型和儲存權(quán)限nlink_t st_nlink;//硬鏈接數(shù)目uid_t st_uid;//用戶IDgid_t st_gid;//組ID ..... }?
access,測試文件是否擁有某種權(quán)限,讀、寫、執(zhí)行、是否存在
頭文件:<unistd.h>
函數(shù):int access(const char? *pathname, int mode);
mode, R_OK是否讀、W_OK是否寫、X_OK是否可執(zhí)行、F_OK是否存在
存在為0,失敗為-1
?
chmod,修改文件權(quán)限。詳情見man文檔
?
strtol,將字符串轉(zhuǎn)換為相應進制的數(shù)
<stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
nptr為字符串,endptr通常為空,base為想要轉(zhuǎn)成的進制
?
chown,修改文件所有者
truncate,專門由于拓展文件
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
length,當小于文件長度時街截取文件,保持length大小。大于文件長度時,拓展文件,空洞補填
?
link,創(chuàng)建一個硬鏈接,
int link(const char *oldpath, const char *newpath);
symlink,創(chuàng)建軟連接,參數(shù)一侄
?
unlink,刪除鏈接,創(chuàng)建/刪除臨時文件
先用open創(chuàng)建文件open("tempfile", O_CReaT | O_RDWR, 0664);
在文件關(guān)閉前調(diào)用unlink("tempfile");
當文件被關(guān)閉時文件就會被刪除,文件處于打開狀態(tài)時無法被刪除,關(guān)閉后被unlink
轉(zhuǎn)載于:https://www.cnblogs.com/lr1402585172/p/10482200.html
總結(jié)
以上是生活随笔為你收集整理的lseek、stat、access、chmod、strtol、truncate、unlink的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: open、read、write、文件类型
- 下一篇: inode浅谈