Linux应用程序设计
文章平均质量分 56
clear code
一路向前,莫问前程,前途似锦
展开
-
【彻底弄懂】linux下的条件变量使用
linux下的条件变量使用条件变量条件变量是线程可用的另一种同步机制。条件变量用于自动阻塞线程,知道某个特定事件发生或某个条件满足为止,使用条件变量主要包括两个动作:一个线程等待某个条件满足而被阻塞;另一个线程中,条件满足时发出“信号”。条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量原创 2021-11-20 14:53:12 · 1975 阅读 · 0 评论 -
【彻底弄懂】linux中pthread_detach()的作用
文章目录linux中pthread_detach()解析linux中pthread_detach()解析使用pthread_create创建的线程有两种状态:joinable和unjoinable。默认是joinable 状态,可以通过这个api 来获取其状态pthread_attr_getdetachstate另外可以通过如下代码来设置为状态joinable 还是 unjoinablepthread_attr_t attr;pthread_attr_init(&attr);pthrea原创 2021-11-20 14:49:51 · 14911 阅读 · 0 评论 -
Linux 进程间通信_14-线程(线程,线程间通信--互斥,临界资源/临界区/互斥机制/互斥锁,pthread_mutex_init()/pthread_mutex_lock/unlock())
线程基础每个用户进程有自己的地址空间系统为每个用户进程创建一个 task_struct来描述该进程该结构体中包含了一个指针指向该进 程的虚拟地址空间映射表实际上task_struct 和地址空间映射表一起用来表示一个进程由于进程的地址空间是私有的,因此在进程间上下文切换时,系统开销比较大为了提高系统的性能,许多操作系统规范里引入了轻量级进程的概念,也被称为线程...原创 2019-05-13 16:32:19 · 504 阅读 · 0 评论 -
Linux 进程间通信_13-(system v 信号灯+system v 共享内存)实例
https://www.linuxidc.com/Linux/2011-10/44832.htm系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相应的标识符。内核在保证shmget获得或创建一个共享内存区,初始化该共享内存区...原创 2019-05-13 10:36:20 · 279 阅读 · 0 评论 -
Linux应用程序设计_12-进程间通信-信号灯
信号灯信号灯(semaphore),也叫信号量集。它是不同进程间或一个给定进程内部不同线程间同步的机制。信号灯种类:posix有名信号灯posix基于内存的信号灯(无名信号灯)System V信号灯(IPC对象)信号灯特点:System V 信号灯是一个或多个计数信号灯的集合可同时操作集合中的多个信号灯申请多个资源时避免死锁二值信号灯:值为0或1。与互斥锁类...原创 2019-05-11 20:51:07 · 380 阅读 · 0 评论 -
Linux应用程序设计_11-进程间通信-消息队列
消息队列消息队列是IPC对象的一种消息队列由消息队列ID来唯一标识消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等。消息队列可以按照类型来发送/接收消息消息队列的操作包括创建或打开消息队列、添加消息、读取消息和控制消息队列创建或打开消息队列使用的函数是msgget,这里创建的消息队列的数量会受到系统消息队列数量的限制添加消息使用的函数是msgsnd,按照类型把消...原创 2019-05-11 17:07:07 · 382 阅读 · 0 评论 -
Linux应用程序设计_10-进程间通信-共享内存
System V IPCIPC 对象包含: 共享内存、消息队列和信号灯集每个IPC对象有唯一的IDIPC对象创建后一直存在,直到被显式地删除每个IPC对象有一个关联的KEYipcs / ipcrmSystem V IPC - keySystem V IPC – ftok#include <sys/types.h>#include <sys/ipc.h>...原创 2019-05-11 16:25:51 · 403 阅读 · 0 评论 -
Linux应用程序设计_09-进程间通信-信号通信
信号通信信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程信号的生存周期用户进程对信号的响应方式:...原创 2019-05-11 15:31:41 · 236 阅读 · 0 评论 -
Linux应用程序设计_08-进程间通信-管道
Linux下进程间通信概述常用的进程间通信方式传统的进程间通信方式无名管道(pipe)有名管道(fifo)信号(signal)System V IPC对象4. 共享内存(share memory)5. 消息队列(message queue)6. 信号灯(semaphore)BSD套接字(socket)无名管道这里所说的管道主要指无名管道,它具有如下特点:只能用于...原创 2019-05-11 10:21:57 · 418 阅读 · 0 评论 -
Linux应用程序设计_07-守护进程
守护进程守护进程(Daemon)是Linux三种进程类型之一,称为精灵进程,是运行在后台的一种特殊进程;它独立于控制终端并且周期性地执行某种任务或等待处理发生的事件。 通常在系统启动时运行,系统关闭时结束**;守护进程不受用户登陆与注销的影响,它一直在运行着**。Linux系统中大量使用,很多服务程序以守护进程形式运行转载这位博主的文章,感谢分享https://blog.csdn.net/...原创 2019-05-08 15:11:58 · 396 阅读 · 1 评论 -
Linux应用程序设计-06_wait()和waitpid()
进程回收子进程结束时由父进程回收孤儿进程由init进程回收若没有及时回收会出现僵尸进程wait()和waitpid()(1)函数说明:wait()函数用于使父进程(也就是调用 wait()的进程)阻塞(暂时停止目前进程的执行),直到一个子进程结束或者该进程接到了一个指定的信号为止。如果该父进程没有子进程或者他的子进程已经结束,则 wait()会立即返回-1。子进程的结束状态值会由参数s...原创 2019-05-08 09:37:18 · 310 阅读 · 0 评论 -
Linux应用程序设计_05-进程
进程概念程序存放在磁盘上的指令和数据的有序集合(文件)静态的进程执行一个程序所分配的资源的总称进程是程序的一次执行过程动态的,包括创建、调度、执行和消亡程序和进程的区别:转载了这篇博主,介绍的很详细,感谢他的文章分享。https://blog.csdn.net/fuqin163/article/details/1546919进程是程序的一次运行活动,属于一种动态的概念...原创 2019-05-06 16:15:41 · 475 阅读 · 0 评论 -
Linux应用程序设计-04_文件锁
文件锁这一节将讨论的是在文件已经共享的情况下如何操作,也就是当多个程序共同操作一个文件的情况。Linux 中通常采用的方法是给文件上锁,来解决对共享的资源的竞争。文件锁包括建议性锁和强制性锁。建议性锁要求每个相关程序在访问文件之前检查是否有锁存在,并且尊重已有的锁。一般情况下,不建议使用建议性锁,因为无法保证每个程序都自动检查是否有锁。而强制性锁是由内核执行的锁,当一个文件被上锁进行写...原创 2019-05-08 09:38:17 · 391 阅读 · 1 评论 -
Linux应用程序设计-03_文件I/O
文件 I/O – 介绍什么是文件I/O?posix(可移植操作系统接口)定义的一组函数不提供缓冲机制,每次读写操作都引起系统调用核心概念是文件描述符访问各种类型文件Linux下, 标准IO基于文件IO实现文件 I/O – 文件描述符每个打开的文件都对应一个文件描述符文件描述符是一个 非负整数。Linux为程序中每个打开的文件分配一个文件描述符文件描述符从0开始分配,依次递增。...原创 2019-05-05 15:02:35 · 750 阅读 · 0 评论 -
Linux应用程序设计-02_标准I/O
标准 I/O – 按对象读写下列函数用来从流中读写若干个对象:#include <stdio.h>size_t fread(void *ptr, size_t size, size_t n, FILE *fp);size_t fwrite(const void *ptr, size_t size, size_t n, FILE *fp);成功返回读写的对象个数;出错时返回E...原创 2019-05-07 08:35:01 · 334 阅读 · 0 评论 -
Linux应用程序设计-01_标准I/O
文件基础概念:一组相关数据的有序集合在显示文件的属性通常会以如下形式进行显示:第1个字母:代表文件类型第2~4字母:代表用户的权限第5~7字母:代表用户组的权限第8~10字母:代表其他的用户的权限文件属性文件类型-常规文件,指ASCII文本文件、二进制可执行文件,以及硬链接文件d目录文件bblock device 即块设备文件,如硬盘;支持以...原创 2019-05-06 23:37:32 · 618 阅读 · 0 评论