linux高级编程
jalen_king
记录点滴,分享沉淀
展开
-
select、poll、epoll的用法总结
/*select*/ #include #include #include #include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *set);int FD_原创 2014-03-15 20:57:38 · 1170 阅读 · 0 评论 -
xargs详解
Xargs用法详解(原创)博客分类: Shell 简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:这个命令是错误的find /sbin -perm +700 |ls -l这样才是正确的find /sbin -perm +700 |xargs ls -l转载 2017-06-14 10:16:24 · 449 阅读 · 0 评论 -
捕捉信号SIGSEGV并回溯栈帧backtrace
引出问题在嵌入式应用程序开发过程中,调试一直是个老大难问题 -- 由于环境的限制,当程序发生段错误时不能很好的定位到底是哪里出现了错误,如果在程序发生段错误时能够清晰明了地看到程序的栈帧链,那无疑是雪中送炭。本文就捕捉信号SIGSEGV并在该信号的处理函数中打印出函数栈帧链来帮助我们调试程序。本文的程序适合ARM和X86平台。回溯栈帧原理理解函数栈帧的布局后,那么自转载 2016-11-25 10:32:46 · 1953 阅读 · 0 评论 -
sysinfo结构体
sysinfo结构体Linux中,可以用sysinfo来获取系统相关信息。Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型:#include int sysinfo(struct sysinfo *info);结构体信息:在Linux 2.3.16中,结构体的信息是(单位是字节):[cpp] view转载 2016-08-10 09:08:21 · 1099 阅读 · 0 评论 -
Makefile学习实例1
知识1:#在Makefile中书写在同一行中的多个命令属于一个完整的shell命令行,书写在独立行的一条命令是一个独立的shell命令行。#因此:在一个规则的命令中,命令行“cd”改变目录不会对其后的命令的执行产生影响。就是说其后的命令执行的工作目录不会是之前使用“cd”进入的那个目录。#如果要实现这个目的,就不能把“cd”和其后的命令放在两行来书写。而应该把这两条命令写在一行上,用分原创 2016-08-09 17:04:21 · 544 阅读 · 0 评论 -
通过shell脚本生成C代码例程
通过shell脚本生成C代码例程:#!/bin/shtarget=$1BUILDER_VERSION_BRANCH=${VERSION_BRANCH}BUILDER_VERSION_MAJOR=${VERSION_MAJOR}BUILDER_VERSION_MINOR=${VERSION_MINOR}BUILDER_VERSION_EXTRA=${VERSION_EXT原创 2016-08-16 10:29:06 · 1858 阅读 · 0 评论 -
net-snmp移植记录
移植目标:把net-snmp开源snmp软件移植到嵌入式linux系统中。1.编译源码net-snmp版本下载最新的net-snmp-5.7.3我们采取静态编译,通过LDFLAGS="-static"指定编译静态库,留给应用程序调用。CC=powerpc-e300c3-linux-musl-gcc指定交叉编译工具连。root@ubuntu:/home/gjt/net-s原创 2016-06-30 16:36:38 · 3151 阅读 · 0 评论 -
嵌入式Linux下Camera编程--V4L2 (V4L2内核驱动配置、USB转串配置)
嵌入式Linux下Camera编程--V4L2 (2011-11-10 16:03:52作者:Sam (甄峰) sam_code@hotmail.com0. 背景知识:首先要确认的是,Kernel是否支持USB Camera。因为Linux下,USB协议除了电气协议和标准,还有很多Class。 这些Class就是为了支持和定义某一类设备转载 2014-03-26 18:23:42 · 6696 阅读 · 1 评论 -
进程和线程之间的区别和联系总结
进程和线程之间的区别和联系进程和程序区别和联系表现在以下方面:1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是 一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。 进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因 调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被 撤消。反映了一个程序在一定的数据集上运行的全部动态过程。2)进程和转载 2014-03-27 23:12:54 · 902 阅读 · 0 评论 -
理解同步与异步的概念
进程同步用来实现程序并发执行时候的可再现性。一.进程同步及异步的概念1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那转载 2014-03-15 21:06:49 · 874 阅读 · 0 评论 -
Linux终端配置输入输出(termios)函数
termios系列函数-tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed等,用以获取/设置终端设备的属性/控制/速度。1. 函数声明函数声明#include #转载 2015-06-29 11:47:00 · 1693 阅读 · 0 评论 -
通过printf设置Linux终端输出的颜色和显示方式
通过printf设置Linux终端输出的颜色和显示方式转载自:http://www.cnblogs.com/clover-toeic/p/4031618.html 在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。 终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式转载 2015-06-29 11:52:30 · 586 阅读 · 0 评论 -
printf写入标出输出的缓冲区刷新条件
printf缓冲区刷新条件: 1 缓冲区填满 2 写入的字符中有‘\n’ '\r' 3 调用fflush(stdout)手动刷新缓冲区 4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新 printf为例,在printf的实现中,在调用write之前加入了IO缓冲区,这是一个用户空间的缓冲,首原创 2015-05-15 15:08:13 · 2311 阅读 · 1 评论 -
多线程与fork
多线程程序与fork()多线程程序里不准使用forkUNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在”自身以外的线程存在的状态”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可能会死锁.请不要,在不能把握问题的原委的情况下就在多线程程序里fork子进程.能引起什么问题呢转载 2014-04-10 15:34:30 · 621 阅读 · 0 评论 -
对 jiffies 溢出、回绕及 time_after 宏的理解
转载地址:http://blog.csdn.net/dlutbrucezhang/article/details/9919453关于jiffies变量: 全局变量jiffies用来记录自启动以来产生的节拍的总数。系统启动时会将该变量初始化为0,此后,每当时钟中断产生时就会增加该变量的值。jiffies和另外一个变量息息相关:HZ。HZ是每秒系统产生的时钟中断次数,所以jiffi转载 2017-11-23 15:50:32 · 742 阅读 · 0 评论