
Linux
少个G
这个作者很懒,什么都没留下…
展开
-
Linux下函数sync/fsync/fdatasyn的区别
硬盘上一般都有一些缓冲区以此来提高数据的写入效率,操作系统写入数据其实只是写入了缓冲区,直到缓冲区满,才排队写入硬盘中。这种操作降低了写入的次数,但是提高了数据的写入的延时,导致缓冲区中的数据与磁盘中的文件不同步。#include <unistd.h>void sync(void)功能:把所有缓冲区中的数据全部同步到磁盘注意:只是发布将数据同步到磁盘的命令,并不是等待执行完成...原创 2019-08-10 23:49:58 · 1223 阅读 · 0 评论 -
Linux下条件变量详解
条件变量可以让线程在满足特定的条件下暂停(睡眠),需要与互斥量配合使用。pthread_cond_t cond = PTHREAD_COND_INITIALIZER;通过宏对条件变量初始化int pthread_cond_init (pthread_cond_t cond,pthread_condattr_t cond_attr); 功能:初始化条件变量 cond:待初始化的条件变量 ...原创 2019-08-17 20:39:06 · 861 阅读 · 0 评论 -
Linux下多线程编程详解
一、线程基本概念1、线程就是进程中的执行路线,即进程内部的控制序列,或者说是进程的子任务(进程就是正在运行的程序,它一个资源单位)。2、线程就是轻量级的,没有自己独立的内存资源,使用的是进程的代码段、数据段、bss段、堆(注意没有栈)、环境变量表、命令行参数、文件描述符、信号处理函数、工作目录、用户ID、组ID等资源。3、线程拥有自己独立的栈,也就是有自己独立的局部变量。4、一个进程中可以...原创 2019-08-17 20:33:26 · 437 阅读 · 0 评论 -
Linux下的socket网络编程
一、网络通信的基本概念1、TCP和UDP的区别TCP:传输控制协议,面向连接的服务,安全、可靠(三次握手、响应+重传、四次挥手),速度相对较慢,一般应用在对安全性、完整性有严格要求的场景:FTP、SMTP、HTTP。UDP:用户数据报文协议,面向无连接的服务,不保证安全、可靠,但大多数情况下是可靠的,相对较快,一般应用在流媒体(在线的视频、音频)。三次握手与四次挥手的过程:三次握手:第...原创 2019-08-17 20:22:11 · 249 阅读 · 0 评论 -
Linux下内存管理函数
内存管理API#include <unistd.h>void *sbrk(intptr_t increment)increment:0 获取未分配前的内存首地址(也就是已经分配内存的尾地址)大于0 增加内存空间小于0 释放内存空间返回值:未分配前的内存首地址,以字节为单位。int brk(void *addr)功能:设置未分配内存的首地址返回值:成功0,失败-1...原创 2019-07-28 18:55:58 · 379 阅读 · 1 评论 -
Linux下环境变量的获取和设置
环境变量以字符串形式存在的,绝大多数据记录的是路径信息,它表示了当前操作系统的资源配置,环境设置等相关信息。1、环境变量表每个程序运行时操作系统都会把所有的环境变量记录到一张表中传给程序。通过main函数参数获取 int main(int argc,char* argv[],char* environ[])通过声明为全局变量获取 extern char** environ;2、环境...原创 2019-07-28 18:43:36 · 1095 阅读 · 0 评论 -
Linux下动态加载共享库
#include <dlfcn.h>1、加载共享库void *dlopen(const char *filename, int flag);filename:共享库的库名,或路径flag:RTLD_LAZY 使用时才加载RTLD_NOW 立即加载返回值:共享库的句柄(类似文件指针)2、获取标识符地址并使用void *dlsym(void *handle, const ...原创 2019-07-28 18:30:53 · 285 阅读 · 0 评论 -
Linux下共享库的创建和使用
共享库与静态库的区别在于,共享库只是在调用模块中嵌入调用代码的在库的相对位置的地址,当执行程序时,共享库会和程序一起加载到内存中,当执行到调用共享库中代码的指令时跳转到共享库中执行,执行完毕后在跳转回来。相比于静态库占用空间小,方便更新(共享库发生变化后,程序不需要再次编译),但相比于静态库执行效率略低。共享库以.so结尾,Linux下需要以lib开头下面将以libmath.so来说明如何创...原创 2019-07-28 16:55:49 · 2411 阅读 · 1 评论 -
Linux下静态库的创建和使用
静态库:静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系。静态库的优点是执行速度快;缺点是占用空间大,被多次使用就会有多份冗余拷贝。当静态库中的内容发生变化时,需要重新编译出新的程序,因此不能轻易修改库中的内容。静...原创 2019-07-28 16:34:02 · 717 阅读 · 0 评论 -
Linux下进程之间通信方式详解
一、基本概念什么进程间通信(IPC,Interprocess communication):是指两人个或多个进程之间交换数据的过程叫进程间通信。进程之间为什么需要通信?当需要多个进程协同工作高效率完成任务时,因为每个进程都个独立的个体(资源单位),进程之间就需要进行通信。进程间通信方式:1、简单进程间通信:命令行参数,环境变量表、信号、文件2、传统进程间通信:管道3、XSI进程间通信...原创 2019-08-17 16:32:06 · 327 阅读 · 0 评论 -
Linux下目录流函数opendir/readdir/closedir详解
#include <dirent.h>#include <sys/types.h>DIR *opendir(const char *name);功能:打开一个目录流name:目录路径返回值:目录流struct dirent *readdir(DIR *dirp);功能:从目录流中读取一个文件结点信息dirp:opendir返回值返回值:文件节点信息i...原创 2019-08-13 15:38:03 · 699 阅读 · 0 评论 -
Linux下互斥量详解
一、同步、竞争、互斥当多个线程同时访问其共享的资源时,需要相互协调,以防止出现数据不一致、不完整的问题,能达到这种状态线程同步。而有些资源在同一时刻只有一个线程访问,对于这种资源的访问需要竞争。 当资源获取到后,能够防止资源被其它线程再次获取的技术叫互斥。二、互斥量(锁)pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;int pthread_...原创 2019-08-17 20:47:49 · 1373 阅读 · 0 评论