第三章学习
文件I / O
5个函数:open、read、write、lseek 以及close
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等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可为正或负- read
ssize_t read(int filedes, void *buff, size_t nbytes); - 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