C++系统编程
文章平均质量分 87
多线程、多进程、锁、通信方式
BSY丶
这个作者很懒,什么都没留下…
展开
-
线程基础知识
4. 应避免在多线程模型中调用 fork 除非,马上 exec,子进程中只有调用 fork 的线程存在,其他线程在子进程中均 pthread_exit。实际上,无论是创建进程的 fork,还是创建线程的 pthread_create,底层实现都是调用同一个内核函数 clone。1. 从线程主函数 return。2. 从内核里看进程和线程是一样的,都有各自不同的 PCB,但是 PCB 中指向内存资源的三级页表是相同的。线程id是在【进程】地址空间内部,用来标识线程身份的id号,不同进程间线程id可以相同。原创 2023-06-20 22:35:43 · 29 阅读 · 0 评论 -
进程组、会话、守护进程
2> 父进程创建子进程的时候默认父子进程属于同一进程组。进程组的ID==第一个进程ID(组长进程),组长进程id==进程组id,组长进程可以创建一个进程组,创建该进程组中的进程,然后终止。,每个进程都属于一个一个进程组,简化对多个进程的管理,waitpid函数和kill函数的参数中用到。1. 调用 进程不能是进程组组长,该调用 进程变成新会话首进程(session header)守护进程(精灵进程),是Linux 中的后台服务进程,通常。2. 该进程成为一个新进程组的组长进程。获取进程所属的会话 ID。原创 2023-06-20 20:50:10 · 24 阅读 · 0 评论 -
Liunx线程同步基础
如直接使用 mutex,除了生产者、消费者之间要竞争互斥量以外,消费者之间也需要竞争互斥量,但如果汇聚(链表)中没有数据,消费者之间竞争互斥锁是无意义的。死锁:在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是"死锁"。lock 尝试加锁,如果加锁不成功,线程阻塞,阻塞到持有该互斥量的其他线程解锁为止。一次调用,做一次-- 操作, 当信号量的值为 0 时,再次 -- 就会阻塞。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。原创 2023-06-22 21:36:29 · 31 阅读 · 0 评论 -
进程间通信(IPC)
1、创建映射区的过程中,隐含着一次对映射文件的【读操作】2、当MAP_SHARED映射区的权限应该原创 2023-06-12 17:04:48 · 215 阅读 · 0 评论 -
进程基础知识
注意:只有进程空间的各段的内容要发生变化时(子进程或父进程进行写操作时,都会引起复制),才会将父进程的内容复制一份给子进程。在fork之后两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。 一个进程终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。kill 对其无效。原创 2023-06-06 21:52:37 · 141 阅读 · 0 评论 -
文件与目录
3、用lseek读取文件大小实际用的是读写指针初末位置的偏移差,一个新开文件,读写指针初位置都在文件开头。上面代码出现lseek返回799,ls查看为800的原因是,lseek读取到偏移差的时候,还没有写入最后的‘$’符号,末尾那一大堆^@,是文件空洞,如果自己写进去的也想保持队形,就写入“\0”。1、对于写文件再读取那个例子,由于文件写完之后未关闭,读写指针在文件末尾,所以不调节指针,直接读取不到内容。注意:打开一个文件,读写指针默认在文件头,如果文件本身有内容,直接写入会覆盖原有内容。原创 2023-06-05 17:00:21 · 61 阅读 · 0 评论 -
Linux常用工具
进入编辑模式,光标前插入字符进入编辑模式,光标所在行的行首插入进入编辑模式,光标后插入字符进入编辑模式,光标所在行的行末插入字符进入编辑模式,光标所在行的下一行插入进入编辑模式,光标所在行的上一行插入字符删除光标所在字符并进入编辑模式删除光标所在行并进入编辑模式。原创 2023-05-24 17:39:31 · 51 阅读 · 0 评论 -
Linux常用命令
操作系统给每一个文件赋予唯一的inode,当有相同的inode的文件存在时,彼此同步。1.软链接,以路径的形式存在。为保证软连接可以任意搬移,创建时务必对源文件使用绝对路径。删除时,只将硬链接计数减一。功能是为某一个文件在另外一个位置建立一个同步的链接。注意:-xargs默认为空格的形式进行分割,3.软链接可以对一个不存在的文件名进行链接。3.硬链接只有在同一个文件系统中才能创建。gzip、bzip2只能压缩一个文件。4.软链接可以对目录进行链接。2.不允许给目录创建硬链接。tar可以压缩多个文件。原创 2023-04-27 15:29:17 · 46 阅读 · 0 评论