![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux的应用编程
keep study
这个作者很懒,什么都没留下…
展开
-
进程间通信
进程间通信的方式1. Pipe fifo 实现最简单2. mmap 非血缘关系进程间3. 信号 开销小4. domain 套接字,稳定性最好使用本地套接字,实现一个本地服务器和多个客户端之间通信类似server 作为服务器,接收客户端的数据,保存每个客户端的fd,实现和客户端的双向通信。#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <stri原创 2022-03-30 14:16:11 · 326 阅读 · 0 评论 -
Linux udev识别移动设备
udev是什么udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及hotplug的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载firmware时。udev系统由三个部分组成:libudev函数库,可以用来获取设备的信息,/usr/include/libudev.h。udevd守护进程,处于用户空间,用于管理虚拟/dev管理命令udevadm,用来诊断出错情况,/usr/bi原创 2022-03-23 14:06:32 · 822 阅读 · 0 评论 -
linux消费者生产者 条件变量
条件变量:本身不是锁! 但是通常结合锁来使用。 mutexpthread_cond_t cond;初始化条件变量: 1. pthread_cond_init(&cond, NULL); 动态初始化。 2. pthread_cond_t cond = PTHREAD_COND_INITIALIZER; 静态初始化。阻塞等待条件: pthread_cond_wait(&cond, &mutex); 作用: 1) 阻塞等待条件变量满足 2)原创 2022-02-22 16:33:41 · 623 阅读 · 0 评论 -
linux生产者消费者(使用信号量)
信号量:应用于线程、进程间同步。相当于 初始化值为 N 的互斥量。 N值,表示可用资源数, 可以同时访问共享数据区的线程数。函数: sem_t sem; 定义类型。 int sem_init(sem_t *sem, int pshared, unsigned int value); 参数: sem: 信号量 pshared: 0: 用于线程间同步 1: 用于进程间同步 value:N值。(表示可用资源数) sem_destroy(); sem_wait(); 一次原创 2022-02-22 15:59:51 · 622 阅读 · 0 评论 -
linux系统编程--孤儿进程 僵尸进程
孤儿进程:父进程先于子进终止,子进程沦为“孤儿进程”,会被 init 进程领养。僵尸进程:子进程终止,父进程尚未对子进程进行回收,在此期间,子进程为“僵尸进程”。 kill 对其无效。子进程终止时,子进程残留资源 PCB 存放于内核中,PCB 记录了进程结束原因,进程回收就是回收 PCB。回收僵尸进程,得 kill 它的父进程,让孤儿院去回收它。#include <stdio.h>#include <unistd.h>#include <sys/wait.原创 2022-02-20 14:08:04 · 861 阅读 · 1 评论 -
open与fopen的区别
函数原型FILE *fopen(const char *filename, const char *mode);参数filename-- 这是 C 字符串,包含了要打开的文件名称。mode-- 这是 C 字符串,包含了文件访问模式。功能使用给定的模式mode打开filename所指向的文件。1.层次不同open是系统调用,返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是ANSIC标准中的C语言库函数,返回的是一个指向文件结构的指针)。在不同的系统中应该调用不同的内核原创 2021-09-09 15:56:02 · 4228 阅读 · 0 评论 -
Linux线程-互斥锁
在线程实际运行过程中,防止共享资源被并发访问。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作一、什么是互斥锁互斥锁是另一种用于多线程中的同步访问方法,它允许程序锁住某个对象,使得每次只能有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后原创 2021-09-03 16:37:27 · 426 阅读 · 0 评论 -
linux下信号量和互斥锁的区别
之前一直没有怎么关注过这个问题,前些日子在面试一家公司的时候,面试官提到了pthread_cond_wait/pthread_cond_signal的实现,当时答的不是很好,回来就查了nptl的代码。前天,水木上又有人问到了信号量和互斥锁的问题,我想还是对它们的区别与实现总结一下。首先了解一些信号量和线程互斥锁的语义上的区别:援引CU上一篇帖子的内容:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别原创 2021-09-03 16:15:00 · 1729 阅读 · 0 评论 -
Linux多线程编程之条件变量
前言条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待”条件变量的条件成立”而挂起;另一个线程使”条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。1、函数说明a、pthread_cond_init函数可以用来初始化一个条件变量。他使用变量attr所指定的属性来初始化一个条件变量,如果参数attr为空,那么它将使用缺省的属性来设置所指定的条件变量。 b、pthread_cond_destroy函数可以用来摧毁所指定的条件原创 2021-09-03 15:23:09 · 232 阅读 · 0 评论 -
linux的应用编程整体框架
原创 2021-09-03 12:26:54 · 352 阅读 · 0 评论