随笔分类 - Linux
摘要:一、静态库和共享库的区别 静态库在编译的时候被加载,而共享库在执行之后才被加载 加载静态库编译所生成的可执行文件比使用共享库的方式要大 静态库以.a为后缀,共享库以.so为后缀 二、静态库的制作 gcc -c add.c sub.c(编写源文件,gcc -c命令生成对应的目标文件add.o和sub.
阅读全文
摘要:进程间通信(IPC)就是指不同进程之间传播和交换数据,每个进程各自有不同的用户地址空间(虚拟地址空间),任何一个进程的全局变量在另一个进程中都看不到,所以进程间要交换数据必须能通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷贝到内核缓冲区,进程B再把数据从内核缓冲区拷贝到自己的用户空间,内
阅读全文
摘要:一、共享内存shm 1 概念:多个进程的地址空间都映射到同一块物理内存,这样多个进程都能看到这块物理内存,实现进程间通信,而且不需要数据的拷贝,所以速度最快。 二、内存映射mmap 1 前言:先介绍一下普通的读写文件的原理,进程调用read/write系统调用后会陷入内核,内核开始读写文件,假设内核
阅读全文
摘要:I/O多路复用:单个线程可以同时处理多个I/O; 一、select:成功则返回已准备好的文件描述符个数,超时则返回0,出错则返回-1; (1)头文件包含:#include <sys/select.h>、<unistd.h>、<sys/time.h>; (2)select返回后集合fdset中只有事件
阅读全文
摘要:Linux的进程处理函数需包含头文件:#include <unistd.h> 一、进程函数 1 进程创建 pid_d fork(void); 2 进程终止:只有exit才会先清理I/O再进入内核,所以输出缓冲中的所有数据都会被写入到文件中,等同于return 0; void exit(int sta
阅读全文
摘要:Linux的线程处理函数需包含头文件:#include <pthread.h> 一、线程函数:成功则返回0,出错则返回错误编号 1 线程创建 int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, void *(*start_r
阅读全文
摘要:Linux下的大部分文件/目录处理函数都需包含头文件:#include <sys/stat.h>,少部分需包含<unistd.h>或<stdio.h> 01 文件类型: S_ISREG(st_mode) 普通文件 S_ISDIR(st_mode) 目录 S_ISCHR(st_mode) 字符设备 S
阅读全文

浙公网安备 33010602011771号