APUE学习笔记【2】

第三章学习

文件I / O

5个函数:open、read、write、lseek 以及close

  1. open函数
    int open(const char pathname, int oflag,…/, mode_t mode * / )
    oflag参数是定义在fcntl.h中的,有如下多种:O_RDONLY, O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_NONBLOCK, O_SYNC等

  2. lseek
    off_t lseek(int filedes, off_t offset, int whence);
    • 若whence是SEEK_SET(定义在sys/types.h中),则将该文件的位移量设置为距文件开始处offset 个字节。
    • 若whence是SEEK_CUR,则将该文件的位移量设置为其当前值加offset, offset可为正或负。
    • 若whence是SEEK_END,则将该文件的位移量设置为文件长度加offset, offset可为正或负

  3. read
    ssize_t read(int filedes, void *buff, size_t nbytes);
  4. write
    ssize_t write(int filedes, const void * buff, size_t nbytes);
#include "apue.h"
#include <fcntl.h>
#include <sys/types.h>

#define BUFFSIZE 4096

int main(int argc, char*argv[])
{
    printf("hello!\n");

    int filefd = open("/home/xie/study/test/haha.txt", O_RDWR|O_CREAT|O_APPEND, 0);

    char *strHello = "Hello C!";
    int ret = write(filefd, strHello, strlen(strHello));

    char buf[BUFFSIZE] = {0};

    lseek(filefd, 0, SEEK_SET);
    ret = read(filefd, buf, BUFFSIZE);

    printf("buf = %s \nret = %d \n", buf, ret);
    return 0;
}

root@ubuntu:# gcc -I ../apue.3e/include test1210.c 210 -static ../apue.3e/lib/libapue.a
root@ubuntu:# ./test1210
hello!
buf = Hello C!Hello C!Hello C!Hello C!Hello C!Hello C!Hello C!Hello C!Hello C!Hello C!
ret = 80

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值