linux环境编程
文章平均质量分 95
青丶空゛
一歩ずつ歩み続けてはじめて千里の遠くに行き着けるし.
(如果个别文章图片不见了,建议访问我的博客园找对应文章,[https://www.cnblogs.com/ailumiyana],懒癌又犯了,懒得改了 哈哈)
展开
-
sigwait
intsigwait(const sigset_t*restrict sigmask,int* restrict signo);sigwait函数一直阻塞直到*sigmask指定的任何一个信号被挂起为止,然后从挂起信号集中删除那个信号,并解除对它的阻塞。当sigwait返回时,从挂起信号集中删除的信号的个数被存储在signo指定的那个位置中。信号转载 2016-05-28 21:22:59 · 1126 阅读 · 1 评论 -
linux环境编程-守护进程
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完...转载 2018-06-05 17:33:52 · 225 阅读 · 0 评论 -
层级目录结构的Makefile递归编译方法
层级目录结构的Makefile编写方法.层级目录结构的Makefile编写方法.0.前言1.如何编译整个工程2.过滤每层不需要编译的目录3将所有输出文件定向输出.0.前言假如现在有这样一个目录结构:要怎么实现简洁的自动化编译呢?现在我想要实现的效果 1.在顶级目录,直接make即可编译整个工程. 2.可以很方便的在Makefile中添加或过滤掉只有我想编译的目录或不需要编译的目录. 3.新添加的模...原创 2018-06-06 11:57:37 · 2908 阅读 · 0 评论 -
信号量
这个信号量理解起来是有点不容易啊,我看书看了好几遍才知道怎么回事。在讲这一节信号量之前,我还是想先说几个小知识点,这也是我在学习完后最终理解的“精华”,哈哈!信号量是干啥的? 信号量就是用来解决进程间的同步与互斥问题的一种进程间通信机制。同步与互斥的通俗理解 这两个名词咱们从字面上就能理解。举个例子吧,在创建子进程时,你是怎么保证父子进程执行的先后顺序呢?我在以前的时候是...转载 2015-12-05 14:53:39 · 774 阅读 · 1 评论 -
sprintf和snprintf的区别
今天在项目中使用snprintf时遇到一个比较迷惑的问题,追根溯源了一下,在此对sprintf和snprintf进行一下对比分析。因为sprintf可能导致缓冲区溢出问题而不被推荐使用,所以在项目中我一直优先选择使用snprintf函数,虽然会稍微麻烦那么一点点。这里就是sprintf和snprintf最主要的区别:snprintf通过提供缓冲区的可用大小传入参数来保证缓冲区的不溢出,如果超出缓冲...转载 2017-08-02 15:39:24 · 1619 阅读 · 1 评论 -
epoll使用详解
#include <sys/epoll.h>epoll的行为与poll(2)相似,监视多个有IO事件的文件描述符。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。epo...原创 2018-12-27 10:01:01 · 1665 阅读 · 0 评论 -
file_operations成员解析
linux设备驱动中file_operations结构体分析原文:http://blog.csdn.net/sunsea1026/article/details/6586143struct module *owner第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块的指针. 这个成员用来在它的操作还在被使用时阻止模块被卸载. 几...转载 2016-12-17 14:57:25 · 515 阅读 · 0 评论 -
字符设备驱动
转载 :http://blog.jobbole.com/86531/一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。 块设备:是指可以从设备的任意位置读取一定长度数据...转载 2016-11-07 14:23:10 · 440 阅读 · 0 评论 -
linux线程同步的方法
Linux 线程同步的三种方法线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 一、互斥锁(mutex)通过锁机制实现线程间的同步。 1. 初始化锁: 在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。 静态分配:...转载 2018-04-13 15:30:06 · 5362 阅读 · 0 评论 -
C语言实现一个简单便捷的日志打印宏
C语言实现一个简单便捷的日志打印宏[调试手段] [日志系统]在写应用的时候难免会遇到一些要调试的代码段,习惯了Windows下IDE的调试手段的人,刚开始面对嵌入式的交叉编译环境的时候一般会想有什么好的调试手段吧,这里总结一下最传统的调试方法:打印日志。并通过C语言实现一个简单便捷的日志打印宏。C语言实现一个简单便捷的日志打印宏Sample自定义宏关于注释log应该包含...原创 2018-04-10 15:48:43 · 3599 阅读 · 0 评论 -
gcc警告选项汇总
参考资料:https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options请求或取消警告的选项警告是诊断消息,报告的结构本质上不是错误的,但是有风险或表明可能有错误。以下与语言无关的选项不会启用特定的警告,但会控制GCC生成的诊断类型。-fsyntax-only 检查代码中的语法错误,但除此之外...原创 2018-04-18 14:19:33 · 34908 阅读 · 2 评论 -
Linux读二进制串口数据异常,数据校验出错.
今天做USB的Gsensor程序发现读到的数据总是校验不过,无法进一步解析数据,而在Windows下通过工具读出来的数据均是正常的。于是做出了串口读上来的数据有加过工的可能,因为该Sensor是以二进制形式进行数据上报的,通常串口配置是以ASCII码为准,猜测有可能是将读到的回车和换行之类的做了处理,因为便于ASCII码的字串的显示。于是通过屏蔽这些标志后 , 后解决串口读二进制数据校验错...原创 2018-06-28 21:13:38 · 1121 阅读 · 0 评论 -
Linux信号量同步共享内存实验.
Linux信号量同步共享内存实验. Linux信号量同步共享内存实验. 简述 程序流程 信号量和共享内存的系统函数 信号量系统函数及接口 共享内存系统函数及接口 写程序 读程序 简述本文主要内容是自己对信号量和共享内存系统函数的整理,及简单使用,以方便以后可能再次使用的情况.也可以为比较熟悉...原创 2018-07-04 18:50:43 · 1486 阅读 · 0 评论 -
linux错误errno对照表
转自 :https://www.linuxidc.com/Linux/2013-09/89525.htmerrno 在 <errno.h> 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。strerror() 函数依据 errno ...转载 2018-07-11 13:51:33 · 709 阅读 · 0 评论 -
accept和accep4t的区别
SYNOPSIS #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); #define _G...原创 2018-11-06 17:49:42 · 2249 阅读 · 0 评论 -
一个基于C++11的定时器队列(timerfd,poll实现)
文章目录前言优点test源代码hppcpp前言最近小程序要用到定时器,找了一圈也没找到合适的,最后还是绕回来选择了muduo里面的TimerQueue,整理了下它的代码,独立了出来,因为实在懒得从头写一个- -!。原来的muduo中TimerQueue是专为EventLoop提供定时功能的组件,我在笔记muduo网络库学习笔记(三)TimerQueue定时器队列中解读过muduo这块代码...原创 2019-01-24 10:56:15 · 1196 阅读 · 2 评论 -
linux应用开发基础(GCC编译器,动态库,静态库使用)
一:gcc编译器GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc又是一个交叉平台编译器,适合在多种架构中开发程序!! 编译过程: 把一个.c文件编程一个可执行文件,其实...转载 2018-04-08 19:59:10 · 256 阅读 · 0 评论 -
Linux 信号详解一(signal函数)
信号列表SIGABRT 进程停止运行 6SIGALRM 警告钟 SIGFPE 算述运算例外SIGHUP 系统挂断SIGILL 非法指令SIGINT 终端中断 2SIGKILL 停止进程(此信号不能被忽略或捕获)SIGPIPE 向没有读的管道写入数据SIGS...转载 2018-03-19 09:38:53 · 427 阅读 · 0 评论 -
Linux 文件操作总结
原文 : http://www.cnblogs.com/yanlingyin/archive/2012/08/04/2617209.html文件是linux中的一个重要概念。在Linux中,一切(几乎一切)都是文件。简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作。对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。转载 2017-06-15 15:34:57 · 550 阅读 · 0 评论 -
Linux进程关系
Linux进程关系作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们在这里讲解进程组和会话,以便以更加丰富的方式了管理进程。 进程组 (proces转载 2016-05-16 17:58:20 · 429 阅读 · 0 评论 -
文件IO
3- 文件IO本章说明了可用的文件IO函数 :打开文件,读文件,写文件等。UNIX系统中的大多数文件I/O只需5个函数 :open,read,write,lseek,以及close.然后说明不同缓冲长度对read,write 的影响。本章描述的函数常被称为不带缓冲的I/O (指read和write都调用内核中的一个系统调用(内核提供的、原创 2016-11-11 07:34:43 · 393 阅读 · 0 评论 -
UNIX标准IO
5 – 标准I/O库 本章描述I/O库 : 标准I/O库处理很多细节 : 如缓冲区分配 ,以优化块长度执行I/O等 . 这些处理使用户不必担心如何选择正确的块长度 ,但不深入理解I/O库函数的操作 ,也会带来一些问题 . 流和FILE对象 : 所有 [I/O函数] 都是围绕 [文件描述符] 的 ,当打开一个文件时 ,即返回一个文件描述符 ,然后原创 2016-11-11 07:37:36 · 422 阅读 · 0 评论 -
UNIX进程环境及关系
进程环境 7.2main函数: C总是从 main函数开始执行 其原型是 Int main(int argc , char *argv[]);其中argc是命令行参数 的数目 ,argv是指 向参数的各个指针所构成的数组。当内核执行C程序时,(使用一个exec函数) 在调用main前 先调用一个特殊的启动例程。可执行程序文件将此启动例程,指定为程序的起始地址---这是由链接原创 2016-11-11 07:44:36 · 497 阅读 · 0 评论 -
UNIX进程控制
8– 进程控制本章介绍了UNIX系统的进程控制 : 创建新进程 ,执行程序和进程终止 ,还说明了进程属性的各种ID .8.2进程标识 :每个进程都有一个非负整形标识唯一进程ID .常用其作为其他标识符的一部分以保证其唯一性 .例如 :应用程序有时就把进程ID作为名字的一部分来创建一个唯一的文件 .一些专用进程 :ID为0的进程通常是调度进程 .原创 2016-11-11 08:22:21 · 712 阅读 · 0 评论 -
linux消息队列 .
转于 : http://blog.csdn.net/mybelief321/article/details/9185625概述 消息队列,就是一些消息的列表,用户可以在消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。消息队列的实现转载 2016-12-09 20:47:46 · 531 阅读 · 0 评论 -
linux时间函数time和gettimeofday
一、time函数 #include time_t time(time_t *calptr);返回距计算机元年的秒数一旦取得这种以秒计的很大的时间值后,通常要调用另一个时间函数将其变换为人们可读的时间和日期#include //calendar time into a broken-down time expressed as UTCstr转载 2017-01-03 19:10:52 · 944 阅读 · 0 评论 -
linux应用编程共享内存
linux 从2.2内核开始就支持多种共享内存方式,比如 :mmap系统调用; Posix共享内存; 以及Sytem共享内存 这里介绍mmap。 共享内存 : 两个进程 A,B共享内存的意思 是 , 同一块物理内存被映射到进程A,B 各自的进程地址空间 。 进程A可以及时看到进程 B对 共享内存中数据更新 , 反之亦然 。 共享内存允许两个或多个 进程共享一个给定的存储区 .原创 2016-12-28 16:57:11 · 480 阅读 · 0 评论 -
简单智能远程控制服务器课题
一、项目概述:简单智能远程监控 功能:服务器端:1、服务器端利用随机数模拟向串口读取传感数据,需要模拟的传感数据要求有:温度、湿度、光 照、室内噪音度等等。 2、服务器要求在数据保中保存有采集传感数据的日期和时间。 3、服务器利用网络接收客户端发送过来的设备控制信号,通过写驱动,实现对底层硬件的控制, 这里使用打印显示的方式模拟。 4、在进程之间IPC通信时,要求使用文件锁或信号量实...原创 2017-01-06 10:46:29 · 1551 阅读 · 0 评论 -
linux环境消息队列
概述:进程间通信就像货物托运,不同通信方式代表了不同托运渠道,管道是最古老的一种。但管道出货不能分清货物批次,而消息队列,弥补了这些缺陷:1. 消息队列是一种先进先出的队列数据结构,可以保证先送出的货物先到达,后送出的货物后到达,避免了插队现象。2. 消息队列将输出的信息进行打包处理,这样可以保证每个消息为单位进行接收了。3. 消息队列可以对货物进行分类服务,标记各种类别的货物,这样就可以根据货物...原创 2016-12-30 10:15:12 · 782 阅读 · 0 评论 -
【整理】linux进程间通信函数整理
/***************************************************************************************************** * *进程间通信 IPC * **************************************************************************原创 2016-12-20 14:59:04 · 554 阅读 · 0 评论 -
linux环境编程信号
10–信号信号是软件中断 ,信号提供了一种处理异步时间的方法 .例如 : 终端用户键入中断键 ,会通过信号机制停止一个程序 ,或及早终止管道中的下一个程序 .本章首先对信号进行综述 ,并说明每种信号的一般用法 .然后分析早期实现的问题 .说明问题之后在说明解决方法 .10.2 信号的概念 .每个信号都有一个名字 ,这些名字都以3个字符SIG开头 .原创 2016-11-17 10:47:14 · 423 阅读 · 0 评论 -
共享内存能否存放带有指针的结构体?
http://www.cnblogs.com/knightly/p/3525456.html共享内存能否存放带有指针的结构体? 共享内存是第二种IPC工具。他允许两个无关的进程访问相同的逻辑内存。共享内存是在两个运行的程序之间传递数据的有效手段。尽管X/Open标准并没有要求,很可能绝大数的共享内存实现都是会将不同进程之间正在共享的内存安排在相同的物理内存中。 共享转载 2016-12-31 08:08:08 · 2092 阅读 · 0 评论 -
linux下C获取文件大小的方法
http://blog.csdn.net/gdujian0119/article/details/6363574获取文件大小这里有两种方法:方法一、范例:[cpp] view plain copy print?unsigned long get_file_size(const char *path)转载 2017-06-16 15:14:07 · 3512 阅读 · 0 评论 -
编译脚本Makefile干些什么事情
编译脚本Makefile干些什么事情一个工程中的源文件不计其数,按其类型,模块,功能划分在各个目录,所以Makefile就定义了一系列的规则来指定,哪些文件需要编译,用什么编译,怎么编译,文件编译的先后顺序等,以及一些更为复杂的功能。Makefile分布至工程中的各个目录。 一般工程的,工程根目录下的Makefile描述了整个工程的编译、链接等规则。其中包括了工程中一些环境参数的配置,工程下...原创 2018-04-17 11:24:18 · 1640 阅读 · 0 评论