Linux--文件C接口--系统接口--fd--输出重定向--多进程打开同一文件--1010--1014

1. 文件

狭义上的文件:磁盘上的文件。

广义上的文件:显示器,网卡,键盘...。

站在系统的角度,只要能够被输入读取,或者能被输入写出的设备都叫做文件。

Linux认为一切皆文件。访问文件,本质上是进程在访问文件。

2. 文件相关的C语言接口

2.1打开文件

fopen

FILE*fopen(const char*path,const char*mode)

FILE*fp=fopen("makefile,c","r");

path为文件名的路径  mode是访问文件的模式

模式 描述 文件是否存在
"r" 打开文件读取 存在
"r+" 打开文件读取并写入 存在
"w" 创建文件并写入 已存在就先清空
"w+" 创建文件读取并写入 已存在就先清空
"a" 创建文件并附加写入 已存在不清空
"a+" 打开文件读取附加写入 已存在不清空

2.2 创建文件的路径

当打开文件操作需要创建文件时,该文件会在当前路径中生成。

Linux当前路径:当进程运行起来的时候,每个进程都会记录自己当前所处的工作路径。

查看方法:拿到进程的pid后

ls/proc/14613-l

可以看到exe和cwd cwd即当前路径

2.3 清空文件

FILE*fp=fopen("makefile.c","w");

fclose(fp);

 或者命名行中

>makefile.c

2.4 文件关闭

int fclose(FILE * stream)

fclose(fp);

2.5 文件写入

fwrite

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

const char*s1="hello fwrite";

fwrite(s1,strlen(s1),1,fp);

参数说明 :

const void *ptr : 指针指向要写出数据的内存首地址 ;

size_t size : 要写出数据的 基本单元 的字节大小 , 写出单位的大小 ;

size_t nmemb : 要写出数据的 基本单元 的个数 ;

FILE *stream : 打开的文件指针。

:C语言中字符串以'\0'结尾,这里传入strlen(s1)却不用+1。因为文件不需要遵守C语言的规定,文件仅保存有效数据。

fprintf

int fprintf( FILE *stream, const char *format, ... );


const char*s2="hello fprintf";
fprintf(fp,"%s",s2);//s2以%s的形式输入fp

char name[20] = "Mary";
fprintf( fp, "Hello %s\n", name );//Hello Mary

fputs

int fputs(const char *str, FILE *stream)

const char*s3="hello fputs";

fputs(s3,fp);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值