今天学习Linux应用软件编程(操作系统相关编程)
1.文件操作 ----Linux下,一切皆文件
2.多任务 ----进程、线程
3.网络编程
4.构建网络服务器
5.数据库

文件操作:

1.Linux下的文件类型

7种文件类型:
b 块设备文件  ---->存储类设备(硬盘)
c 字符设备文件  ---->如输入输出设备(鼠标键盘显示器)
d 目录文件  ---->文件夹
- 普通文件  ---->xxx.c xxx.h ……
l 软连接文件  ---->快捷方式
s 套接字文件  ---->网络通信
p 管道文件  ---->进程间通信

例:

      d           rwxrwxr-x         2         linux   linux    4096            1月  29  2024        20240129/
文件类型 文件操作权限 链接个数 用户名 组名 文件大小 文件最后被修改的时间 文件名称
r:read
w:write
x:可执行权限
-:无权限
第一个rwx:自己对文件的读写执行权限
第二个rwx:同组用户对文件的读写执行权限
r-x:其他人对文件的读写执行权限

2.文件操作思想

1)打开文件
2)读写文件
3)关闭文件

3.文件操作的方法

Linux下的2种文件操作方法:
I:input  O:output
1)标准IO:
    C标准库提供的一套对文件操作的操作方法---->库函数
2)文件IO:
    Linux内核提供的一套对文件操作的操作方法---->系统调用

4.标准IO

1)打开文件 fopen
2)读/写文件 
    fgetc/fputc:一个字符一个字符读写
    fgets/fputs:一行一行读写
    fread/fwrite
3)关闭文件 fclose

man手册:
第一章节:Linux命令
第二章节:系统调用
第三章节:库函数

FILE *fopen(const char *pathname, const char *mode);

功能:打开一个文件并获得一个文件流指针
参数:
    pathname:打开的文件的文件名地址
    mode:打开的方式
    "r"     以只读的方式打开,文件必须存在
    "r+"   以读写的方式打开,文件必须存在
    "w"    以只写的方式打开,文件存在则清空,文件不存在则创建
    "w+"  以读写的方式打开,文件存在则清空,文件不存在则创建
    "a"    以追加写的方式打开,文件不存在则创建
    "a+"  以读写的方式打开,文件不存在则创建,文件存在追加写
返回值:
    成功:文件流指针:FILE *
    失败:NULL

流:字节流
文件流:数据从文件流入流出体现出来的字节流
标准IO:FILE---->文件流
               FILE * -->文件流指针-->已打开文件

int fputc(int c, FILE *stream);

功能:向文件中写入一个字符
参数:
    c:要写入的字符
    stream:要写入的文件的文件流指针
返回值:
    成功:写入的字符的ASCII值
    失败:EOF(-1)

int fgetc(FILE *stream);

功能:从文件中读取一个字符
参数:
    stream:要读取的文件的文件流指针
返回值:
    成功:读到的字符的ASCII值
    失败:EOF
    读到文件末尾:EOF

od -c 文件名 ---->以字符方式查看文件

主函数传参:
./a.out aaa bbb   ----->实参
形参:主函数中的参数
argc : 程序运行时,给主函数传递的参数个数 (例:此处为3)
argv : 指针数组:argc个指针,分别指向了给主函数传递的实参
       argv[0] ---->"./a.out"
       argv[1] ---->"aaa"
       argc[2] ---->"bbb"

- 普通文件:

文本文件:   1.txt xxx.c  xxx.h                                              20250809  --->'2''0''2''5''0''8''0''9'
二进制文件:xx.jpg    a.out   xxx.png   xxx.mp4                  2025         ---->0000 0000 0000 0000                                                                                                                         0000 0111 1110 1001

int fputs(const char *s, FILE *stream);

功能:向文件中写入字符串(不会写入'\0'字符)
参数:
    s:字符串首地址
    stream:要写入的文件流指针
返回值:
    成功:非负的整型数据
    失败:EOF(-1)

char *fgets(char *s, int size, FILE *stream);

功能:从文件中读取一行数据
参数:
    s:用来存放读取到数据的内存空间首地址
    size:希望从文件中读到的字节数
    stream:要读取的文件流指针
返回值:
    成功:返回s空间的首地址
    失败:NULL
    读到文件末尾:NULL

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐