标准 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 及库相关推荐

  1. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  2. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

  3. linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码

    今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友.我知道这个 PDF 文件的密码,但是我不想透露密码.作为代替,我只想移除密码并发送文件给他.我开始在因特网上查找一些简单的方法来从 PDF ...

  4. 实训|第十一天学习一下linux中的进程,文件查找,文件压缩与IO重定向

    [root@localhost~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就 ...

  5. Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件

    http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...

  6. linux在当前目录下创建pic目录,Linux中/proc目录下文件详解

    文章转自: Linux中/proc目录下文件详解(一) ------------------------------------------------------------------------ ...

  7. linux中一切都是文件_在Linux中,“一切都是文件”是什么意思?

    linux中一切都是文件 One of the defining features of Linux and other UNIX-like operating systems is that &qu ...

  8. Linux中/proc目录下文件详解(zt)

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  9. linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...

最新文章

  1. 服务器,工作站和终端机
  2. 一加7pro运动计步功能_测血压、心率、血氧、运动计步,来电微信消息等提醒,多种模式可选,这款智能手环功能实在是太全了吧!...
  3. PostgreSQL的高可用与数据复制方案
  4. 监听localStorage变化(同页面监听)
  5. Karrigell 入门教程
  6. 详解PostgreSQL数据库中的两阶段锁
  7. 【Kafka】kafka 1.0.0 查询订阅某topic的所有consumer group
  8. 问题:There are no packages available for installation 问题的解决办法
  9. vue中 点击事件的写法_Vue父子组件状态同步的最佳方式
  10. MTK 驱动开发---Memory 移植
  11. android toast通知关闭,Android Toast通知用法实例详解
  12. 深入浅出JS—11 ES6中类class和extends的使用
  13. linux内核与Linux发行版本区别
  14. Android Service---在前台运行服务
  15. Androidstudio检测不到夜深模拟器解决方法
  16. 找不到匹配的host key算法
  17. aws lambda使用_使用AWS Lambda,无服务器框架和Go的按需WebSockets
  18. Windows下pytorch-gpu安装以及CUDA详细安装过程 附带各个版本安装包
  19. Asp.net GridView分页功能的实现
  20. steam的植物大战僵尸打不开(fatal error)

热门文章

  1. fortran语法笔记
  2. oracle转mysql总结经验,oracle转mysql总结(转)
  3. 服务器改家用系统吗,服务器主机改家用
  4. c语言self用法,C/C++知识点之Self Numbers C语言 UVA640
  5. php 字符串与数字相加,注意!PHP中字符串与数字的比较
  6. python字典的值可以是字典吗_python字典的值可以是字典吗
  7. java数_java大数
  8. 软件可靠性指标mtbf测试评估,软件可靠性评估.pdf
  9. 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
  10. perf +火焰图使用