【Linux】系统调用IO接口

系统调用IO接口:

  • open
  • read
  • write
  • lseek
  • close
  • 一个小示例:

以下演示的都是系统调用接口:

open

【Linux】系统调用IO接口_第1张图片

第一参数:文件路径名

第二参数:必选操作选项:(O_REONLY,O_WRONLY,O_REWR)
可选操作选项:(O_CREATE,O_APPEND等等(可以管道符链接))

第三参数:产文件不存在创建新文件的权限,用的是八进制掩码(注意这时第二参数必有O_CREATE)

返回值:文件描述符,失败-1

read

size_t read(int fd,void* arr,size_t count);

第一参数:文件描述符

第二参数:指向的缓冲区空间(从文件中读到的内容放在这里)

第三参数:读到的字节数(小于缓冲区)

返回值:失败-1,成功为实际读到的字节数

write

size_t write(int fd,const void* arr,size_t count);

和read一样,只不过是文件缓冲区读到文件中,这个二参数是const

lseek

off_t lseek(int fd,off_t offset,int whence);

【Linux】系统调用IO接口_第2张图片

第一参数:文件描述符

第二次参数:偏移量(字节)

第三参数:三个宏对应三个光标

close

close(int fd)

参数:文件描述符

一个小示例:

这个实例演示了上面所有系统调用接口的用法

  1 #include<stdio.h>
  2 #include<fcntl.h>
  3 #include<unistd.h>
  4 #include<sys/stat.h>
  5 #include<string.h>
  6 int main(){
  7   umask(0);//改当前的默认掩码
  8   int fd= open("./bite.text",O_RDWR|O_CREAT,0777);
  9   char arr[]="I like Linux!";
 10   int ret=write(fd,arr,strlen(arr));
 11   if(ret<0){
 12     perror("open error");
 13     return -1;
 14   }
 15 //此时光标在文末
 16   lseek(fd,0,SEEK_SET);
 17   char str[1024]={0};
 18   ret=read(fd,str,1023);
 19   if(ret<0){
 20     perror("read error");
 21     return -1;
 22   }
 23   printf("%s\n---set:%d\n",str,ret);
 24   close(fd);
 25   ret=read(fd,str,1023);
 26   if(ret<0){
 27     perror("read error");
 28   }                                                                                                                                                  
 29   return 0;
 30 }

【Linux】系统调用IO接口_第3张图片【Linux】系统调用IO接口_第4张图片

你可能感兴趣的:(Linux,linux,接口)