系统编程经常使用到20个函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、文件I/O编程常使用的函数

 1、open()

函数原型:int open(const char* pathname ,int flags, mode_t mode)

功能:打开一个文件
参数:pathname : 打开的文件;
          flags:O_WRONLY  只写打开文件;
                     O_RDONLY  只读打开文件;
                     O_RDWR    可读可写打开文件
                        (这三种只能单独使用)
返回值:打开成功返回文件描述符,失败返回-1;

2、creat()

函数原型:int creat(const char* pathname,mode_T mode)

功能:创建一个权限为mode的文件
参数:pathname:需要创建的文件名;
          mode :  文件权限可以选择的几种模式
返回值:创建成功返回文件的描述符,失败返回-1;

3、write()

函数原型:int write(int fd,void*buff,int count)

功能:向文件中写入数据;
参数:fd:需要写入数据的文件;
           buff:buff所指向需要写入的数据的缓冲区;
           count:需要写入的大小
返回值:写入成功返回写入的字节数;失败返回-1。

4、read()

函数原型:ssize_t read(int fd,void* buff,size_t count);

功能: 从文件中读出数据存放在buff指向的地址;
参数;fd:文件描述符
           buff:读出的数据存放的地址空间;
           count:需要读的数据大小;
返回值:读出成功返回读到的字节数;0 代表读到文件尾未读到数据;失败返回-1;

6、lseek()

函数原型:off_t  lseek(int fd,off_t offset,int whence)

功能:移动文件读写指针;
参数:fd:文件描述符
          offset:文件读写指针的偏移量;
          whence:SEEK_SET:文件头
                          SEEK_CUR:当前位置
                          SEEK_END:文件末尾;
返回值:成功返回当前位置,即文件读写指针相比开头偏移量的大小;失败返回-1。

7、access()

函数原型:int access(const char*pathname,int mode)

功能:查询文件是否具有某项权限;
参数:pathname:需要查询的文件名(路径+名字)
           mode:R_OK:判断文件是否具有可读权限;
                       W-OK:判断文件是否具有可写权限;
                       X_OK:判断文件是否具有可执行权限;
                       F_OK:判断文件是否存在。
返回值:查询成功返回0;失败返回-1;

8、unlink()

函数原型:int unlink(const char*pathname)

功能:删除文件
参数:pathname:需要删除的文件(路径+名字);
返回值:删除成功返回0;失败返回-1。

9、rmdir()

函数原型:int rmdir(const char*pathname)

功能:删除目录
参数:pathname:需要删除的目录(路径+名字);
返回值:删除成功返回0;失败返回-1。

10、remove()

函数原型:int remove(const char*pathname)

功能:删除目录或文件                     //删除目录是调用redir(),删除文件调用unlink()。
参数:pathname:需要删除的目录或文件(路径+名字);
返回值:删除成功返回0;失败返回-1

 11、fchtl()

函数原型:int fcntl(int fd,int cmd);
                  int fcntl(int fd,int cmd,long arg);
                  int fcntl(int fd,int cmd,struct flock * lock);//主要介绍这种
功能:可以对文件描述符进行各种操作;管理和创建文件锁等等(主要介绍文件锁)
参数:fd:文件描述符
          cmd:F_DUPFD:用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。
                 F_GETFD:取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。
                F_SETFD: 设置close-on-exec 旗标。该旗标以参数arg的FD_CLOEXEC位决定。
                F_GETFL: 取得文件描述词状态旗标为open()的参数flags。
                F_SETFL: 设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。
                F_GETLK :取得文件锁定的状态。
                F_SETLK: 设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。
               F_SETLKW: 与F_SETLK 作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR

        lock:为struck flock类型,设置锁的状态。

          注:struck flock
                {
                    short l_type;//锁的种类;
                    off_t l_start;    //相对位移量;
                    short l_whence;//相对位移量的起点
                    off_t  l-len;//加锁区域的长度
                    pid_t l_pid;//进程号
                }
返回值:成功返回0;失败返回-1;                       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值