笔记12

-------------------------------3.23-----------------------
文件编程,进程线程编程 TCP/UDP
1.Linux文件:文件本身包含的数据(打开文件可以看到的数据信息)

2.文件属性(ls - l查看文件属性)(元数据:文件的访问权限,文件的大小,创建日期等)(目录也是文件之一)
cd .和cd …的本质------->(当创建一个新的目录的时候,系统自动创建两个文件项 .和 …)
. :当前目录
… :上一级目录

3.目录
/usr:
usr include: 存放的是头文件
usr bin: 存放多数日常应用程序
usr lib: 存放系统文件
usr local: 存放用户个人安装的软件
usr sbin: 在当用户模式下,不用的系统管理程序
usr src: 存放源代码

/var:
cache:应用程序的缓存文件
lib:应用程序的信息和数据
local:usr/local中的程序信息
lock:锁文件
log:日志文件
opt:/opt中的程序信息,数据
run:正在执行着的程序信息,PID文件
tmp:临时文件

/media:文件系统的挂载点(根目录下)

4.linux文件类型:
d:目录文件
-:普通文件
l:链接文件
c/b:设备文件
p:管道文件
f:堆栈文件
s:共享文件

5.操作系统:
(1).内核:操作系统对于软硬件和系统资源分配的最重要的核心部分
系统调用:操作系统提给用户的一组“特殊”的接口,用户可以通过这组接口来获取操作系统内核提供的服务
(2).用户编程接口:系统调用并不是直接和程序员进行交互,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口,在实际使用中程序员调用的通常是用户编程接口(API)

6.文件:
文件描述符:本质是一个正整数,open函数 0开始一直到OPEN-MAX

man1:查看命令
man2:系统调用
man3:库函数

7.缓冲区:程序中每个文件都可以使用
磁盘文件-》缓冲区-》内核(cpu)

8.open系列函数:

(1).creat:创建文件函数
int creat(文件描述符,创建模式)
创建模式:
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IXRWU 可读,可写,可执行

头文件:

#include <stdio.h>
#include <fcntl.h>
#include <sys/types>
#include <sys/stat.h>
int main(){
int fd = creat("./test",S_IRWXU);
if(-1 == fd)
{
printf("creat error!\n");
return 1;
}
printf("fd=%d\n",fd);
return 0;
}

(2).open:(“文件名”,flag:打开方式,mode如果没有创建那么自动略过)*
O_RDONLY:以只读方式打开文件
O_WRONLY:以只写方式打开文件
O_RDWR:以可读可写的方式打开
O_CREAT:如果文件存在就打开,如果不存在就创建
O_APPEND:写文件的时候追加在文件末尾
出错返回值-1.

//
int main(){
int fd = open("./test1",O_RDWR|O_CREAT,0700);
if(-1 == fd)
{
printf("error!\n");
return 1;
}
printf("fd=%d\n",fd);
return 0;
}

(3).write函数:向文件写入数据
write(文件描述符,写入的数据指针,写入的数据内存大小)
例:(write(fd,buff,strlen(buff))😉

int main(){
int fd = open("./test1.txt",O_RWRD|O_CREAT,0700);
if(-1 == fd){
printf("error\n");
return 1;
}
printf("fd=%d\n",fd);

char buff[1024]="hello world!";
write(fd,buff,strlen(buff));
close(fd);
return 0;
}

(4).read:从文件读数据
read(文件描述符,读入某个变量(指针),读出数据大小)

int main(){
int fd = open("./test1.txt",O_RWRD|O_CREAT,0700);
if(-1 == fd){
printf("error\n");
return 1;
}
printf("fd=%d\n",fd);
char buff[1024]="hello world!";
write(fd,buff,strlen(buff));//(注:需加上头文件(#include <string>))
close(fd);


char buffer[1024]={0};
int fd1 = open("./test1.txt",O_RDWR|O_CREAT,0700);
if(-1 == fd1){
perror("open!");
return 1;
}

read(fd1,buffer,16);
printf("%s\n",buffer);

printf(fd1=%d\n"fd1);

close(fd1);
return 0;
}

(5).lseek:用来调整光标的位置
lseek(文件描述符,光标移动的位置数,光标移动的形式)
SEEK_SET:将光标移动到文件开头,再增加相应的offset位置
SEEK_CUR:将光标移动到文件的当前位置再往后加offset的位置
SEEK_END:将光标移动到文件的末尾,再增加offset的位置
lseek函数返回值:返回值是从开头到光标位置,有多少个字符

int main(){
int fd =open("./test1.txt",O_RDWR|O_CREAT,0700);
if(-1 == fd){
printf("error\n");
return 1;
}
printf("fd=%d\n",fd);
char buff[1024]="hello world ";
write(fd,buff,strlen(buff));

char buffer[1024]={0};
lseek(fd,0,SEEK_SET);
read(fd,buffer,12);
printf("%s\n",buffer);
int length=lseek(fd,0,SEEK_END);
printf("length=%d\n",length);
close(fd);
return 0;
}

在这里插入图片描述
在这里插入图片描述

头文件:
在这里插入图片描述

(6).ftruncate:将指定的文件大小修改成length指定的大小
用法:若当前文件大小大于所指定的大小就给文件扩容,如果指定的大小小于当前文件,那就删除后面的文件
语法:ftruncate(int fd,length)
例:ftruncate(fd,0)----》清除数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值