Linux io操作

一:系统调用

二.open/close 函数

open() 函数

open用于创建一个新文件或打开一 个已有文件,返回-个非负的文件描述符fd,
0、1、2为系统预定义的文件描述符,分别代表STDIN_ _FILENO、 STDOUT_ FILENO、
STDERR_ _FILENO。

 

结果: 1.如果文件不存在,返回-1,表示打开失败
         2.如果文件存在,分别返回-个整数,从小到大,
         3.发现第一个文件打开时,是从3开始。
         4.0分配给了标准输入、1分配给了标准输出、2分配给了标准错误

1.flags参数-般在O. RDONLY (只读打开)、0. WRONLY (只写打开)和0. RDWR
(读、写打开)中只能选择-个做为参数。
2.另外还可以根据需要和以下常值可选配组合使用: 0. CREAT、0_ APPEND、
O_ NONBLOCK、O. TRUNC
3.0. CREAT: 若文件不存在则创建它,此时需要第三个参数mode,最终创建的文件权
限= mode&~umask
 

二.read函数

read用于从打开文件中读数据。

read操作从文件的当前偏移量处开始,在成功返回之前,文件偏移量将增加实际读到的
字节数。
有几种情况可能导致实际读到的字节数少于要求读的字节数:


注意:读普通文件时,在读到要求字节数之前就到达了文件尾。例如,离文件尾还有30 !
字节,要求读100字节,则read返回30,下次在调用read时会直接返回0

头文件:


 例程2:文件不存在时,需要创建时,使用open函数 三个 参数的方式

 

三.write函数

write用于向文件写入数据

●write的返回值通常与参数count相同,否则表示出错。
●对于普通文件,write操作从文件的当前偏移量处开始
●若指定了0_ APPEND选项, 则每次写之前

先将文件偏移量设置到文件尾
●成功写入之后,文件偏移量增加实际写的字节数。

例程:编写程序实现简单的cp功能

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>  //以上为声明头文件
int main(int i,char *p[]) //main函数传参,i为在终端要实现的命令数,*p为指针数组,存要执行的文件
{
        int fd,fp;//定义返回值
        char buf[100]={'\0'};
        fd=open(p[1],O_RDONLY);//先以只读的方式打开需要复制的文件,并返回为fd 
        int ret=read(fd,buf,atof(p[3]));//atof(p[3])为字符数字强制转换为数字,把fd文件里字符拿出p[3]个存到缓冲区buf中
        printf("读到内容是=%s\n",buf);
        fp=open(p[2],O_WRONLY);//已只写的方式打开文件p[2],返回值为fp
        fp=write(fp,buf,atof(p[3]));将缓冲区里buf的内容写入fp,实现复制
        printf("%s\n",buf);
}

 注意:对于main函数传参要理解原理,(int i,char *p[ ]),i为执行命令的个数,程序里的0对应终端先执行的第一个命令,以此类推。char *p[]为存的要执行文件。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值