linux中标准I/O 文件I/O 及库
标准 I / O
fopen() 函数打开文件的方式
r / rb 只读 文件必须存在
r+ / r+b 读写 文件必须存在
w / wb 只写 文件存在则长度清零 不存在则创建
w+ / w+b 读写 其他 同w
a / ab 同w 且写入的数据会被追加到文件末尾
a+ / a+b 读写 数据在文件末尾追加 其他同a
diff -ruN +第一个文件 +第二个文件 测试文件复制成功与否???
fgetc / fput 可操作文本文件和二进制文件 效率较低
fgets / fputs 只能操作文本文件(原因是当读取到0 默认为终止符) 效率较高
fread / fwrite 推荐使用
fllush(FILE *stream) 强制刷新缓存区
ftell (FILE *stream) 返回当前流
的位置
fseek(FILE *stream, long offset, int whence) 设定流的位置 成功则返回0
whence 参数的设定 三个宏 SEEK_SET / SEEK_CUR / SEEK_END 分别是文件的起始 当前和结尾位置
offset参数是偏移量
#nclude <errno.h>
ferror(FILE *stream) 流是否出错 有错返回1 否则返回0
feof(FILE *stream) 返回1表示文件已经到末尾 否则返回0
#include <string.h>
fprintf(FILE *stream, const char *fmt......)
ps :把内容写入文件
sprintf(char *s, const char *fmt.....)
ps: 把内容写入缓冲区
sleep()程序休眠 需要添加头文件 #include <unistd.h>
#include <time.h>
time(time *t) 获取当前时间 秒为单位
localltime()
使用时
time_t t;
struct tm *tp;
time(&t);
tp = localtime(&t);
tp->tm_year,tp->tm_mon, tp->tm_mday, tp->tm-hour , tp->tm_min, tp->tm_sec
char ctime(const time_t *timer) 获取时间 返回一个字符串 内容分别是 星期几(英语单词) 月份(英语单词) 一月中的第几天 时分秒 年份
time_t t;
printf("%s", ctime(&t));
#include <fcntl.h>
int open(const char *path, int oflag,...) 用来打开和创建一个文件 成功则返回文件描述符 失败返回EOF 可以是两个参数 也可以是三个参数 两个参数是打开文件 三个参数是创建文件(多出的参数是用来设置文件权限的)
第二个参数可选项:
O_RDONLY:只读的方式打开文件
O_WRONLY:只写的方式打开文件
O_RDWR:读写的方式打开文件
只能选一个
O_CREAT: 如果文件不存在就创建一个 且需要通过第三个参数设置文件权限
O_EXCL: 如果使用O_CREAT时 文件存在 则这个会返回错误信息 作用是判断文件是否存在
O_TRUNC:如果文件存在 则删除原有数据
O_APPEND:使用这个参数 写入的方式都会被追加到文件尾部
第三个参数 文件权限 以八进制数表示
pS:
if((fd == open("1.txt", O_RDWR | O_CREAT | O_EXCL, 0666)) < 0)
{
if(erron == EEXIST) 通过对全局变量进行判断 可是错误原因
perror("exist error");//文件存在才发生的错误
else
perror("other error ");
}
头文件 #include <unistd.h>
int close(int fd) 关闭文件 成功返回0 失败返回EOF
头文件#include <unsitd.h>
ssize_t read(int fd ,void *buf, size_t count) 成功则返回实际读取到的字节数 失败则返回EOF
读到末尾返回0
#include <unistd.h>
ssize_t write(int fd, void *buf, size_t count) 成功返回实际写入的字节 失败返回EOF
count 不应超过buf大小
#include <unistd.h>
off_t lseek(int fd , off_t offset , intt whence)
成功返回文件当前读写位置 出错返回EOF
文件I/O
打开目录文件函数
#include <dirent.h>
DIR *opendir(const char *name)
读取目录文件函数
#include <dirent.h>
struct dirent *readdir(DIR *dirp)
成功则返回一个目录流下的一个目录项 到末尾或者出错会返回NULL
关闭目录文件函数
#include <dirent.h>
int closedir(DIR *dirp)
修改文件权限
#include <sys/stat.h>
int chmod(const char *path, mode_t mode)
int fchmod(int fd, mode_t mode)
成功返回0 错误返回EOF
只有root用户才有权限修改文件权限
获取文件属性
#include <sys/stat.h>
int stat(const char *path, struct stat *buf)
int lstat(const char *path, struct stat *buf)
int fstat(int fd, struct stat *buf)
成功返回0 错误返回EOF
stat()是获取目标文件属性
lstat() 是获取链接文件属性
struct stat结构体的一些属性
mode_t st_mode 类型和访问权限
uid_t st_uid 所有者的ID
uid_t st_gid 用户组ID
off_t st_size 文件大小
time_t st_mtime 最后修改时间
静态库
生成静态库
ar crs lib+filename.a filename.o
查看库中函数情况
nm lib+filefilename.a
怎么给一个程序链接一个库
设测试程序为 test.c
gcc -o test test.c -L+库的路径 -l+库文件名称
共享库
生成共享库
gcc -c fPIC filename01.c filename02.c -Wall
gcc -shared -o libcommon.so.1 filename01.o filename.o
数字是版本
为共享库文件创建链接文件
ln -s libcommon.so.1 libcommon.so
测试
gcc -o test test.c -L+库的路径 -l+库文件名称
默认链接共享库 如果想优先链接静态库 在后面加 -static
让系统找到共享库
1. 在环境变量中添加库的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:+库的路径
2.把库都复制到/lib 或/user/lib)
3.添加到/etc/ld.so.conf.d/*.conf文件 执行ldconfig刷新
linux中标准I/O 文件I/O 及库相关推荐
- Linux中/proc目录下文件详解
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- Linux中/proc目录下文件详解(二)
Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...
- linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码
今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友.我知道这个 PDF 文件的密码,但是我不想透露密码.作为代替,我只想移除密码并发送文件给他.我开始在因特网上查找一些简单的方法来从 PDF ...
- 实训|第十一天学习一下linux中的进程,文件查找,文件压缩与IO重定向
[root@localhost~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就 ...
- Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件
http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...
- linux在当前目录下创建pic目录,Linux中/proc目录下文件详解
文章转自: Linux中/proc目录下文件详解(一) ------------------------------------------------------------------------ ...
- linux中一切都是文件_在Linux中,“一切都是文件”是什么意思?
linux中一切都是文件 One of the defining features of Linux and other UNIX-like operating systems is that &qu ...
- Linux中/proc目录下文件详解(zt)
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法
Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...
最新文章
- 服务器,工作站和终端机
- 一加7pro运动计步功能_测血压、心率、血氧、运动计步,来电微信消息等提醒,多种模式可选,这款智能手环功能实在是太全了吧!...
- PostgreSQL的高可用与数据复制方案
- 监听localStorage变化(同页面监听)
- Karrigell 入门教程
- 详解PostgreSQL数据库中的两阶段锁
- 【Kafka】kafka 1.0.0 查询订阅某topic的所有consumer group
- 问题:There are no packages available for installation 问题的解决办法
- vue中 点击事件的写法_Vue父子组件状态同步的最佳方式
- MTK 驱动开发---Memory 移植
- android toast通知关闭,Android Toast通知用法实例详解
- 深入浅出JS—11 ES6中类class和extends的使用
- linux内核与Linux发行版本区别
- Android Service---在前台运行服务
- Androidstudio检测不到夜深模拟器解决方法
- 找不到匹配的host key算法
- aws lambda使用_使用AWS Lambda,无服务器框架和Go的按需WebSockets
- Windows下pytorch-gpu安装以及CUDA详细安装过程 附带各个版本安装包
- Asp.net GridView分页功能的实现
- steam的植物大战僵尸打不开(fatal error)
热门文章
- fortran语法笔记
- oracle转mysql总结经验,oracle转mysql总结(转)
- 服务器改家用系统吗,服务器主机改家用
- c语言self用法,C/C++知识点之Self Numbers C语言 UVA640
- php 字符串与数字相加,注意!PHP中字符串与数字的比较
- python字典的值可以是字典吗_python字典的值可以是字典吗
- java数_java大数
- 软件可靠性指标mtbf测试评估,软件可靠性评估.pdf
- 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
- perf +火焰图使用