linux高级
文章平均质量分 63
MichaelJay2015
这个作者很懒,什么都没留下…
展开
-
标准IO与文件IO的比较
标准I/O与文件I/O的区别标准I/O与文件I/O的联系标准c库函数中的I/O在底层还是在调用系统级的文件I/O;原创 2016-06-28 19:42:48 · 248 阅读 · 0 评论 -
V4L2_Camera实例代码
一个简单的V4L2摄像头设备采集图像框架, 开源代码: https://github.com/Michael-Jay/V4L2_Camera/其中,之前一直困扰我的就是在ioctl(fd, VIDIOC_DQBUF, &tmp_buf)后, 要把缓存中的数据保存到文件中时, 使用write()时, 误把缓存区的首地址错弄成了struct v4l2_buffer tmp_buf; 导致从缓存中一直原创 2016-09-06 14:09:46 · 2355 阅读 · 2 评论 -
linux进程间通信IPC
常见的进程间通信方式一、传统进程间通信:1. 无名管道;2. 有名管道;pipe/fifo3. 信号(软件层次对中断的模拟);signal二、system v IPC对象1. 共享内存(效率最高);share memory2. 消息队列;message queue3. 信号灯(semaphore);三、 套接字socket1. 网络套接字2. 本地套接字原创 2016-09-15 00:18:43 · 272 阅读 · 0 评论 -
linux进程间通信--消息队列
概念基本操作创建或打开添加消息读取消息控制消息队列概念消息队列由 ID 唯一标识;消息队列就是一个消息的列表,用户可在队列中添加,读取消息等;可按照类型来收发消息;基本操作1. 创建或打开;int msgget(key_t key, int flag);2. 添加消息;int msgsnd(int msqid, const void* msgp, size_t size, in原创 2016-09-15 00:55:59 · 341 阅读 · 0 评论 -
linux通信-共享内存
概念:共享内存是效率最高的进程间通信方式 ,进程可以直接读写内存,不需要任何数据的拷贝。 多个进程共享一段内存,因此与需要依靠某种同步机制,如互斥锁和信号量等。实现方法:创建打开共享内存; shmget(): —–share memory get映射共享内存; shmat(): —–share memory at撤销共享内存; shmdt —- share memory delet删除共享原创 2016-07-08 19:22:00 · 440 阅读 · 0 评论 -
linux进程间通信-信号通信
信号是软件层次上对中断机制的模拟,异步通信。 可以直接进行用户空间进程和内核进程之间的通信,内核通过信号通知用户发生的系统事件。用户进程队信号的响应方式:忽略:(除了SIGKILL,SIGSTOP)捕捉信号:定义差信号处理函数,当信号发生时,执行相关处理函数;执行默认操作;信号发送:1. kill和raiseint kill(pid_t pid, int sig); //向指定进程发送原创 2016-07-07 18:54:51 · 394 阅读 · 0 评论 -
linux守护进程
守护进程的创建1.创建子进程,父进程退出;fork(); //创建子进程exit(); //结束父进程2.在子进程中创建新会话;setsid(); //创建一个新的会话,并担任该会话的组长,目的是为了完全独立3.改变当前目录为根目录;chdir("/"); //程序运行过程中,所在目录不能卸载,但是当要进入单用户模式时,则会有很多麻烦,为了避免这些问题,让“/”作为当前目录是可以的。4.重设文原创 2016-07-08 09:30:31 · 244 阅读 · 0 评论 -
linux/ubuntu16.04搭建minicom的arm调试环境
linux下搭建minicom实现arm调试工具步骤检查系统环境配置安装minicom配置minicom整一个测试程序搞一下呢源代码下载调试linux下搭建minicom实现arm调试个人觉得windows下的超级中断不是好用,而且本人在linux下开发,没有使用虚拟机,因此需要在linux配置调试环境,这里记录一下.工具ubuntu16.04minicomusb转串口线 HL原创 2016-08-02 19:39:18 · 6742 阅读 · 0 评论 -
linux进程间通信-管道通信
linux进程间通信-管道通信2016/07/01 17:02 (建党节,但并没有放假)管道简介..管道是linux中进程通信的一种方式,它将一个程序的输出直接链接到另一个程序的输入。常见的如shell的”|”管道符。主要包括两种:无名管道 和有名管道。 ..从字面上看,无名管道就是文件系统找不到它的名字;有名管道就是在文件系统中能够找到管道名字如后边会看到的”/tmp/myfifo”这个文原创 2016-07-01 18:40:11 · 421 阅读 · 0 评论 -
linux:多路复用I/O
概念:应用程序中需要同时处理多路输入输出流: 若采用阻塞模式,将得不到预期效果; 若采用非阻塞模式,对输入输出轮询,又太浪费CUP资源 资源; 若设置多进程,分别处理多跳数据通路,将产生新进程的同步和通信问题,使得程序变得复杂; 因此,采用多路复用I/O,基本思想: 1. 先构造一张有关描述符表,然后调用一个函数监控这个表,当这些文件描述符中的一个或者多个已经准备好进行I/O通信时,函数原创 2016-07-08 14:27:11 · 818 阅读 · 0 评论 -
ctags建立include头文件的vim形式索引文件
ctags简历include头文件的索引 在某些时候,为了方便的查看头文件中相关结构体或者数据类型的定义,我们想深入到头文件中一探究竟,这时候vim虽然没有像windows下各种IDE工具那么可视化,但是还是有相当强大的工具的,例如ctags。ctags的原理就是在头文件目录下,根据库文件的命名习惯,自动找到相关库头文件,并简历索引。 对于linux来说,大部分的库都放在/u原创 2016-07-04 19:56:05 · 2485 阅读 · 0 评论 -
linux文件基础之标准IO
unix文件基础6/28/2016 6:00:39 PM 输入输出文件描述符:顺序分配,非负整数;内核用来表示一个特定进程正在访问的文件;其他资源(socket,pipe)的访问标识;stdin\stdout\stderr默认shell打开,分别对应0\1\2他们都是系统自动打开的文件指针类型FILE*;不用手动的fopen/fclose不用缓存的IO (系统调用)通过文件描述符访问fd(原创 2016-06-28 19:28:41 · 527 阅读 · 0 评论 -
linux文件基础 之 文件IO
文件I/O简介相对于标准I/O,文件I/O主要面对的是文件,而linux中一切皆文件,因此文件I/O就是针对linux系统的输入/输出操作,属于系统级调用。而之前的标准I/O:实质上是对标准c库的调用。文件I/O特点不带缓冲;每一个read/write操作都直接调用os内核相应的系统调用;通过文件描述符来访问文件;文件描述符file description: 是一个由内存分配的非非负整数,用来唯原创 2016-06-28 19:30:01 · 296 阅读 · 0 评论 -
库(动态库/静态库)
库(静态库和动态库的分析)6/28/2016 7:04:01 PM 本质上来说,是一种可执行代码的二进制形式,可以被os载入内存执行。由于windows/linux的本质不同,因此两者的库的二进制是不兼容的。分类:静态库:程序编译时链接到目标代码中,程序运行中不再需要静态库,因此体积比较大;动态库:编译时,不会链接到目标文件中,而是在运行时被载入。因此在程序运行时还需要动态库存在,代码体积小。原创 2016-06-28 19:31:57 · 312 阅读 · 0 评论 -
文件和目录属性
文件和目录文件属性的获取int stat(const char* filename, struct stat *buf);返回filename有关的信息的结构体,然后放到buf中。-------------------------------------------------int fstat(int fd, struct stat *buf);将已经打开的文件(fd所描述的文件)的信息保原创 2016-06-28 19:59:34 · 320 阅读 · 0 评论 -
PPM,PGM图片格式
转自: PPM / PGM / PBM 图像文件格式 下面将详细介绍ppm文件ppm文件是一种图像文件,有其自己的文件格式。ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征;第二个部分就是图像的数据部分,图像就是由这个部分组成的。 ppm的第一转载 2016-09-08 15:49:02 · 1467 阅读 · 0 评论