liunx系统编程中的open(),close(),lseek(),write(),read()及相关例子
来源:互联网 发布:选择打印机端口 怎么选 编辑:程序博客网 时间:2024/05/22 13:10
Linux系统调用级别的函数有许多,这里只说明open(),close(),lseek(),write()和read()函数。
open()原型
int open(const char *pathname,flags,intperms)
参数定义:
pathname:路径名,例子: “/tmp/working/open.c”
flags:文件打开方式。
O_RDONLY: 只读方式
O_WRONLY:只写方式
O_RDWR:读写方式 这三个是不能同时存在
O_CREAT:如果路径下没有该文件,如没有open.c,则创建open.c文件。
O_EXCL:如果使用了O_CREAT这个参数且文件存在时,返回错误。
O_NOCTTY:
O_TRUNC:如果文件存在,并且以只读或者只写成功打开,则会删除文件的数据。
O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾。
perms:打开的存取权限。
返回值:成功:文件描述符
失败:-1
close()原型:
int close(int fd)
fd是文件描述符,是open()函数的返回值。
返回值:成功:0
失败:-1
#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>#include<stdio.h> int main(){ intfd; if((fd= open("./hello.txt" , O_CREAT | O_TRUNC | O_WRONLY , 0666)) < 0) { perror("open:"); exit(1); } else { printf("Openfile : hello.c %d\n",fd); } if(close(fd) < 0 ) { perror("close:"); exit(1); } else { printf("Closehello.c\n"); } exit(0);}
上面的程序起打开文件作用,如果没有,就创建。
read()函数
原型:ssize_t read(int fd,void *buf,size_t count)
fd:文件描述符
buf:指定存储器读出数据的缓存区
count:指定读出的字节数
返回值:
成功:读到的字节数。
0:达到了文件尾
-1:出错
write()函数
原型:ssize_t write(int fd,void *buf,size_t count)
fd:文件描述符
buf:指定存储器写入数据的缓冲区
count:指定读出的字节数
返回值:
成功:已经写入的字数
-1:出错
lseek:
原型:off_t lseek(int fd,off_t offset,int whence)
fd:文件描述符
offset:偏移量,单位是字节,可正可负。
whence:
SEEK_SET:文件头
SEEK_CUR:但钱位置
SEEK_END:文件尾
返回值:成功:文件当前位置
-1:出错
write.c文件
#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>#include<stdio.h>#include<string.h> int main(void){ inti,fd,size,len; char*buf="Hello world,I will write this file!"; if((fd= open("./hello.txt",O_CREAT | O_TRUNC | O_RDWR,0777 ))<0) { perror("open:"); exit(1); } else printf("openhello.txt %d\n:",fd); len= strlen(buf); if((size=write( fd , buf , len )) < 0 ) { perror("write:"); exit(1); } else printf("Write%s \n",buf); if(close(fd) < 0 ) { perror("close:"); exit(1); } else printf("Closehello.txt\n"); exit(0);}
上面的程序就是创建一个文件,写入buf里面的内容。
read.c文件
#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>#include<stdio.h>#include<string.h>int main(void){ intfd,len,size; charbuf_r[100]; //if((fd=open("./hello.c",O_CREAT| O_RDWR,0777))<0) if((fd= open("./hello.txt",O_CREAT | O_RDWR,0777 ))<0) { perror("open"); exit(1); } else printf("openthe file hello.txt \nfd is %d \n",fd); len= lseek(fd,0,SEEK_END); printf("lenis %d\n",len); lseek(fd,0,SEEK_SET); if((size= read(fd,buf_r,len))<0) { perror("read"); exit(1); } else { buf_r[len]='\0'; printf("sizeis %d\n",size); printf("readfile is %s\n",buf_r); } if(close(fd)<0) { perror("close"); exit(1); } else printf("thefile is close\n"); exit(0); }
其中len = lseek(fd,0,SEEK_END);
这段是测试文件长度的程序。
- liunx系统编程中的open(),close(),lseek(),write(),read()及相关例子
- Linux系统调用及用户编程接口(API) open close write read lseek
- 文件I/O编程 (open、read、write、lseek、close)
- Linux基础编程-文件操作open,lseek,read,write,close
- Linux基础编程-文件操作open,lseek,read,write,close
- linux文件I/O编程 (open、read、write、lseek、close)
- Linux基础编程-文件操作open,lseek,read,write,close
- Open、Read、Write、Lseek、Close、Create、Delete、chdir系统调用
- open,lseek,read,write,close系统调用《unix环境高级编程读书笔记》(1)
- linux open read write lseek close
- 嵌入式linux文件I/O编程 (open、read、write、lseek、close)
- 文件操作编程一(open、close、read、write、lseek函数的使用)
- linux 下文件I/O编程 (open、read、write、lseek、close)
- 【UNIX环境高级编程】文件 IO 操作 一 ( open | close | creat | lseek | write | read )
- 1.Linux应用编程---文件I/O(open、read、write、lseek、close)
- linux下的open()read()write()close()lseek()函数
- Linux 文件IO函数(open/close/read/write/lseek)
- Linux 文件描述符(open,read,write,lseek,close)
- c# 通过反射回调Ajax请求的方法
- [教程]OpenSEES超简单易懂的入门第一课
- 探索 ConcurrentHashMap 高并发性的实现机制
- Java Interface & Abstract Class
- Git Gitosis
- liunx系统编程中的open(),close(),lseek(),write(),read()及相关例子
- android开发 新体验
- java 集合类中的对象如何比较
- 获取Android的Java源代码并在Eclipse中关联查看的方法
- 老鼠与毒药问题的推广
- Python学习-时间模块
- clickOnMenuItem应注意的
- 傅立叶变换--复数到底是个什么东西?
- 挺失败的。