随笔分类 - linux
linux
摘要:信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能。 信号量有三种: "Posix有名字的信号量" Posix基于内存的信号量 System V信号量 信号量比互斥锁高级,互斥锁只允许一个线程访问临界区,信号量可以多个,可以把信号量看作成互斥锁的升级版,但是如果能用互斥锁解
阅读全文
摘要:信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能。 信号量有三种: Posix有名字的信号量 "Posix基于内存的信号量" System V信号量 信号量比互斥锁高级,互斥锁只允许一个线程访问临界区,信号量可以多个,可以把信号量看作成互斥锁的升级版,但是如果能用互斥锁解
阅读全文
摘要:线程的读写锁函数: 1,读写锁的初始化与销毁,静态初始化的话,可以直接使用PTHREAD_RWLOCK_INITIALIZER。 2,用读的方式加锁和尝试(没锁上就立即返回)加锁。 3,用写的方式加锁和尝试(没锁上就立即返回)加锁。 4,解锁 多个进程在同时读写同一个文件,会发生什么? 例子1:用下
阅读全文
摘要:为什么有条件变量? 请参看 "一个线程等待某种事件发生" 注意:本文是linux c版本的条件变量和互斥锁(mutex),不是C++的。 mutex : mutual exclusion(相互排斥) 1,互斥锁的初始化,有以下2种方式。 调用方法的初始化:互斥锁是用malloc动态分配,或者分配在内
阅读全文
摘要:线程基础函数 查看进程中有多少个线程,查看线程的LWP 执行结果:LWP列 线程共享的资源: 注意:信号和线程最好不要一起使用。又用信号又用多线程的架构不太合理。 文件描述符表 信号的处理方式 当前工作目录 用户ID和组ID 内存地址空间(.text/.data/.bss/heap/共享库,栈区(s
阅读全文
摘要:守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间。一般采用以d结尾的名字。从下面的进程信息可以看出,守护进程都是【?】。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登
阅读全文
摘要:一, "管道PIPE" 二, "FIFO通信" 三, "mmap通信" 四,信号的概念 信号的特点:简单,但不能携带大量的信息,满足特定条件就会发生 信号的机制:进程B发送信号给进程A。信号是由内核来处理的。 信号的产生: 按键产生:ctrl+c,ctrl+z,ctrl+\ Ctrl + c → 2
阅读全文
摘要:一, "管道PIPE" 二, "FIFO通信" 三,mmap通信 创建内存映射区。 函数mmap:打开一个文件,指定一个文件的区域,作为一个区域,映射到内存中,以后就直接操作那个内存,就能够实现进程间的通信。因为是内存操作,所以速度最快。 addr:固定NULL length:拿出文件中的多长的一段
阅读全文
摘要:进程间通信:IPC概念 IPC:Interprocess Communication,通过内核提供的缓冲区进行数据交换的机制。 IPC通信的方式: pipe:管道(最简单) fifo:有名管道 "mmap:打开一块共享的内存(速度最快)" "本地套接字:最稳定" "信号:携带信息量最小" 共享内存
阅读全文
摘要:1,pcb:进程控制块结构体:/usr/src/linux headers 4.15.0 29/include/linux/sched.h 进程id:系统中每个进程有唯一的id,在c语言中用pid_t类型表示,是个非负整数。 进程状态:就绪,运行,挂起,停止等状态 描述虚拟地址空间的信息 描述控制终
阅读全文
摘要:stat函数和stat命令 linux文件里的【inode = index node】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。 图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘上了。 【inode = index node】的node
阅读全文
摘要:调用open函数时,可以指定打开的文件描述符是以阻塞方式还是以非阻塞方式。 阻塞概念:read函数在读设备或者管道,或者socket的时候,默认是阻塞的,也就是说,对方如果没有发送数据过来,则read函数就会一直等待数据过来,从代码的角度来说,就是read函数后面的代码不会被执行。 非阻塞概念:re
阅读全文
摘要:linux下的文件读写 1, open pathname:文件路径和名 flags 必选项 O_RDONLY:只读 O_WRONLY:只写 O_RDWR:读写 可选项 O_APPEND O_CREAT O_EXCL mode:如果是创建文件,则必须指定文件的权限,最好算出来的权限:mode & ~u
阅读全文
摘要:gdb 常用命令 1,启动程序 r(un):执行程序,如果没有设置断点,则直接把程序都执行完 start:执行程序到main函数后,停住。 2,常用命令 n(ext):下一条指令(不进入函数) s(tep):进入函数 回车:执行上一条命令 c:执行到下一个断点停住,如果后面没有断点,程序执行结束。
阅读全文
摘要:makefile简单用法 1,执行的时候,如果没有知道目标,则默认执行makefile里的第一个目标,一般项目上都是把all作为第一个目标。 2,【 】代表注释 3,函数: wildcast:可以进行文本匹配 patsubst:内容替换 4,系统变量: $@:代表目标 $ c/c++ 学习互助QQ群
阅读全文
摘要:目录: | 1 | 查看系统里预装了哪些shell | | | | | 2 | 查看使用过的命令历史 | | 3 | linux目录结构 | | 4 | ls命令常用选项 | | 5 | cd命令 | | 6 | 显示当前目录 | | 7 | 创建目录 | | 8 | 显示目录结构 | | 9 |
阅读全文

浙公网安备 33010602011771号