Linux编程--文件IO(2)、目录

fileno

FILE * 转成 fd

int fileno(FILE *stream);

①功能:获得一个文件流指针中的文件描述符
②参数:stream:文件流指针
③返回值:成功返回文件描述符;失败返回-1

fdopen

fd 转成 FILE *,不能改权限

 FILE *fdopen(int fd, const char *mode);

内存模型大小一样的才能相互转换

①功能:将文件描述符转化为文件流指针
②参数:fd:已经打开的文件描述符;
        mode:"r"、"r+"、"w"、"w+"、"a"、"a+"
③返回值:成功返回文件流指针;失败返回NULL

目录

步骤:①打开目标目录;②读取目录;③关闭目录

任何目录都有 “ . ”   “ ..

opendir

DIR *opendir(const char *name);

①功能:打开一个目录获得一个目录流指针
②参数:name:目录名
③返回值:成功返回目录流指针;失败返回NULL

readdir

struct dirent *readdir(DIR *dirp);

①功能:从目录流中读取文件信息并将保存信息的结构体地址返回
②参数:dirp:目录流指针
③返回值:成功返回包含文件信息的结构体;出错或者读到目录流末尾返回NULL

closedir

int closedir(DIR *dirp);

①功能:关闭之前已经打开的目录流对象
②参数:opendir的返回结果中目录流对象
③返回值:成功返回0;失败返回 -1

chdir

int chdir(const char *path);

①功能:改变当前程序的工作路径
②参数:path:改变到的路径
③返回值:成功--返回0;失败--返回-1

getcwd

char *getcwd(char *buf, size_t size);

①功能:获得当前的工作路径
②参数:buf:保存工作路径空间的首地址;size:保存路径空间的长度
③返回值:成功--返回包含路径空间的字符串首地址;失败--返回NULL

(如果没有size,就可能会越界,出现段错误)

mkdir

int mkdir(const char *pathname, mode_t mode);

①功能:创建一个目录
②参数:pathname:路径;mode:mode & ~umask 
③返回值:成功--返回0;失败--返回-1

rmdir

int rmdir(const char *pathname);

①功能:删除一个空目录文件
②参数:pathname:目录文件的名字
③返回值:成功返回0;失败返回-1

stat

int  stat(const  char  *path, struct stat *buf);

①功能:获得文件的属性
②参数:path: 文件的路径;buf:  属性存放空间的首地址
③返回值:成功返回0;失败返回-1

注:①获得文件的详细信息;②传文件和目录均可;③文件名和内容是分开放的

struct stat {
               dev_t     st_dev;         /* ID of device containing file */
               ino_t     st_ino;         /* Inode number */
               mode_t    st_mode;        /* File type and mode */
               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;     /* Block size for filesystem I/O */
               blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

               /* Since Linux 2.6, the kernel supports nanosecond
                  precision for the following timestamp fields.
                  For the details before Linux 2.6, see NOTES. */

               struct timespec st_atim;  /* Time of last access */
               struct timespec st_mtim;  /* Time of last modification */
               struct timespec st_ctim;  /* Time of last status change */

           #define st_atime st_atim.tv_sec      /* Backward compatibility */
           #define st_mtime st_mtim.tv_sec
           #define st_ctime st_ctim.tv_sec
           };

time

time_t time(time_t *t);

①功能:获得1970年到现在的秒数
②参数:t:存放秒数的空间首地址
③返回值:成功返回1970年到现在的秒数;失败返回-1

ctime

char *ctime(const time_t *timep);

①功能:将时间秒数转化成字符串
②参数:timep:保存时间空间的地址
③返回值:成功返回获得时间字符串的首地址;失败返回NULL

localtime

struct tm *localtime(const time_t *timep);

①功能:将一个秒数转化成日历时间
②参数:timep:保存秒数空间的地址
③返回值:成功返回保存日历时间结构体的指针;失败返回NULL

getpwuid

struct passwd *getpwuid(uid_t uid);

①功能:根据用户id到/etc/passwd文件下解析获得结构体信息
②参数:uid:用户id
③返回值:成功返回id对应用户的信息;失败返回NULL

getgrnam

struct passwd *getpwnam(const char *name);

①功能:根据用户名到/etc/passwd文件下解析获得结构体信息
②参数:name:要查找的用户名
③返回值:成功--返回一个指向passwd结构的指针;失败返回NULL

struct passwd 
{
    char   *pw_name;       /* username */
    char   *pw_passwd;     /* user password */
    uid_t   pw_uid;        /* user ID */
    gid_t   pw_gid;        /* group ID */
    char   *pw_gecos;      /* user information */
    char   *pw_dir;        /* home directory */
    char   *pw_shell;      /* shell program */
};

symlink

int  symlink(const  char  *oldpath, const char *newpath);

①功能:创建一个链接向oldpath文件的新符号链接文件
②参数:oldpath:被链接向的文件的路径;newpath:新符号链接文件
③返回值:成功返回0;失败返回-1

remove

int remove(const char *pathname);

①功能:删除一个文件
②参数:pathname:删除文件的路径
③返回值:成功返回0;失败返回-1

rename

int  rename(const  char  *oldpath,  const char *newpath);

①功能:将一个旧路径名改为新的路径
②参数:oldpath:旧路径名;newpath:新路径名
③返回值:成功返回0;失败返回-1

link

int  link(const char *oldpath, const char *newpath);

①功能:创建一个硬链接文件
②参数:oldpath:要链接向的文件;newpath:创建的新硬链接文件
③返回值:成功返回0;失败返回-1

perror:

void perror(const char *s);-->strerror()  stderr 

①功能:打印s字符串和errno对应的错误信息
②参数:s:要打印在终端上的出错信息
③返回值:缺省

strerror

char *strerror(int errnum);

①功能:打印errnum出错码对应的出错信息
②参数:errnum:出错errno号
③返回值:成功返回对应的错误信息

error

void error(int status, int errnum, const char *format, ...);

①功能:程序出错打印对应出错原因和用户输入字符串并退出
②参数:status:程序退出的状态;errnum:错误码;format:类似printf打印
③返回值:缺省

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值