自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 文件锁

如果对一个文件的同一个区域同时读和写,则会发生冲突,导致读和写发生错误,所以要使用文件锁对其进行锁定。 当我们对一个文件写入时,其他进程对其不能进行操作,而对其读时,其他进程不可以写但是可以读。即写独占,读共享。 因此,读锁相当于一个共享锁,对于一个文件的一个区域可以同时加多把锁。而对于一个写锁,对于某个文件只能在一个区域加入一把锁。 使用函数: int fcntl(int fd, F_SETLK/F_SETLKW, struct flock *lock); fd:文件描述符。...

2021-05-24 21:03:42 487

原创 dup()和dup2()

dup和dup2函数都是复制文件描述符的函数,其会将目标文件描述符的文件表项复制给一个其他的文件描述符。 简而言之,dup等函数可以一个已经打开的文件描述符表项复制给另一个文件描述符中,即可以通过两个不同的文件描述符来操控同一个文件。 函数形式: int dup(int oldfd);成功返回目标文件的描述符,失败则返回-1.如int fd2 = dup(fd); fd2则会得到一个新的文件描述符,而且可以和fd一起操控同一个文件。 在使用之后也需要将两个文件描述符关闭: ...

2021-05-24 20:22:25 351

原创 write()和read()函数

两个函数是对文件进行读写操作,使用时需要包含unistd.h,函数格式如下: ssize_t write(int fd, const void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count); fd:目标文件 buf:内存的缓冲区 count:期望写入、读取的字节数 成功写入的时候会返回实际写入的字节数,失败返回-1。 实例代码如下:1.write的用法:#incl...

2021-05-23 21:49:11 950

原创 mmap()函数

mmap函数提供了一种高效的方式对内存进行访问,其成功则会直接返回一个映射的起始指针,也可以对文件进行直接访问,而不需要read()或write()函数等进行操作。 函数所在头文件为<sys/mma.h> 其形式为:void *mmap(void *start, size_t length, int port, int *flag, int fd, off_t offset) 其中start 为映射区的起始地址,如果想要自动选择的话,要用NULL; length:映...

2021-05-23 21:35:26 1413 1

原创 UC中常用的文件操作函数open

UC中常用的文件操作函数:1.int open(const char* pathname, int flag, mode_t mode);:文件打开,成功返回文件描述符,失败返回-1。传入参数解释如下:(1)const char* pathname : 显而易见为文件路径(2)int flag :其可以取: O_RDONLY - 只读 O_WRONLY -只写 O_RDWR -读写(以上三个只能选一) O_APPEND - 在已有...

2021-05-01 22:29:29 220

原创 简述Linux的内存,sbrk,brk,mmap函数

在linux中,我们常常说的内存是虚拟内存,而在存储器件上的为物理内存,两者之间可以进行相互转换。 其中,虚拟内存对应的为地址空间,他是虚拟的,是为了应用程序访问的。而物理内存是存储空间,其为实际的存储区域,只有内核层才能进行访问。物理内存包括半导体内存和换页文件两部分。 当半导体内存不够用时,可以把一些长期闲置的代码和数据从半导体内存中缓存到换页文件中,这叫页面换出,一旦需要使用被换出的代码和数据,再把它们从换页文件恢复到半导体内存中,这叫页面换入。因此,系统中的虚拟内存比半导...

2021-04-27 16:58:54 460

原创 linux静态库与动态库

当我们进行c编程时,要实现多个功能时,可以采用两种模型: 1.单一模型:将所有功能都全部实现于一个文件。简言之就是把所有的代码都写在一个c文件中,初学时常常这么做,但是其编译时间过长,及其不利于维护与协作开发。代码过多时,一坨又一坨的代码看着就头疼。2.分离模型:进行模块化,将不同功能分别划分到不同源文件中,各个功能链接成不同的库文件。这样可以缩短编译时间,维护和协作开发容易。 如果采用分离模型,则可以按照如下实例来解释: a.o \ b.o |------>...

2021-04-21 22:00:04 376

原创 gcc的构建与编译

gcc的构建过程:源代码(.c)->预编译,产生头文件和宏扩展->编译,得到汇编码(.s)->汇编,得到目标码(.o)->链接,得到可执行代码。那么在linux中,我们可以运用如下指令进行分布构建:例如:vim hello.c -编写源代码gcc -E hello.c-o hello.i -预编译(也称编译预处理)gcc -S hello....

2021-04-21 10:39:07 303

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除