Linux
大捞子
光优秀还不够,你必须无可取代!
stay hungry,stay foolish.
展开
-
gdb调试多进程和多线程命令(结合例子)
1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明parent ...转载 2018-03-25 10:56:03 · 618 阅读 · 0 评论 -
c语言和c++中的&修饰符的区别
首先说明C语言没有引用这个概念,引用是c++里的,一般初学者写C语言程序都在vc里写的.cpp文件,那是c++的,所以它会有引用。解释一下引用 ,一个人可以有大名,小名,还有其他的名字,不管是什么名字,都是指的一个人,那么一个变量也可以有多个名字,不管叫什么,指向的都是同一块内存。在C语言中,当作取地址的时候,&是一个一元运算符,和! ~ * -等类似。作为按引用传递的时候,&不是运算符,原创 2017-08-03 15:15:52 · 436 阅读 · 0 评论 -
Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
一、gets() 函数详解gets()函数用来从 标准输入设备(键盘)读取字符串直到 回车结束,但回车符('\n')不属于这个字符串。调用格式为:gets(str);其中str为字符串变量(字符串数组名或字符串指针)。gets(str) 函数与 scanf("%s", &str) 相似,但不完全相同,使用 scanf("%s", &str) 函数输入原创 2017-08-09 22:04:10 · 10811 阅读 · 0 评论 -
【转】Linux 中的/lib和/usr/lib目录区别
有区别的。/lib里面给的是root和内核所需so或者a之类的库文件,而/usr/lib是普通用户能够使用的。Linux的程序有两种模式,这个你应该知道,是用户模式和内核模式,和这个也是有关系的,不再冗述。 ================/lib和/usr/lib和/usr/local/lib的区别(zz)文章分类:操作系统简单说,/lib是内核级的,/usr/lib是系原创 2017-08-02 18:07:57 · 4017 阅读 · 0 评论 -
gcc预处理、编译、汇编和链接详解
1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。原创 2017-07-25 10:54:27 · 3022 阅读 · 0 评论 -
linux ls和 ll 命令
ll 命令列出的信息更加详细,有时间,是否可读写等信息 ll命令和ls -l命令结果区别:上面结果说明:ll会列出该文件下的所有文件信息,包括隐藏的文件,而ls -l只列出显式文件,说明这两个命令还是不等同的!ls 只列出文件名或目录名列表ll -t 是降序, ll -t | tac 是升序ll不是命令,是ls -l的别名ls 命令可以说是l原创 2017-07-25 10:25:54 · 763 阅读 · 0 评论 -
Linux-进程、进程组、作业、会话、控制终端详解
一、进程 传统上,Unix操作系统下运行的应用程序、 服务器以及其他程序都被称为进程,而Linux也继承了来自unix进程的概念。必须要理解下,程序是指的存储在存储设备上(如磁盘)包含了可执行机器指 令(二进制代码)和数据的静态实体;而进程可以认为是已经被OS从磁盘加载到内存上的、动态的、可运行的指令与数据的集合,是在运行的动态实体。这里指的 指令和数据的集合可以理解为Linux上ELF转载 2017-07-24 19:52:27 · 301 阅读 · 0 评论 -
linux信号机制之sigaction结构体浅析,signal 函数,信号捕捉
来自:http://hi.baidu.com/phenix_yw/blog/item/6eb4ca391d1479f23a87ce19.html 信号安装函数sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千转载 2017-07-24 17:54:46 · 405 阅读 · 0 评论 -
struct rlimit介绍
1、rlimit介绍在Linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。 Resouce limit的大小可以直接影响进程的执行状况。其有两个最重要的概念:soft limit 和 hard limit。struct rlimit {rlim_t rlim_cu转载 2017-07-24 17:51:40 · 292 阅读 · 0 评论 -
友善之臂视频监控方案源码学习(6) - 视频采集
转载于http://blog.csdn.net/tandesir/article/details/8437442【问题描述】在友善之臂视频监控方案源码学习(5) - 输入控制一文中,介绍了input_run完成的功能。本文结合input_run实现的视频采集线程对视频采集进行详细分析。【解析】1 涉及到的文件和目录mjpg-streamer-mini2440-rea原创 2017-07-24 14:42:07 · 417 阅读 · 0 评论 -
linux为什么没有产生core 文件 问题分析
一、要保证存放Core dump的目录存在且进程对该目录有写权限。存放Core dump的目录即进程的当前目录,一般就是当初发出命令启动该进程时所在的目录。但如果是通过脚本启动,则脚本可能会修改当前目录,这时进程真正的当前目录就会与当初执行脚本所在目录不同。这时可以查看"/proc//cwd"符号链接的目标来确定进程真正的当前目录地址。通过系统服务启动的进程也可通过这一方法查看。转载 2017-07-27 10:12:27 · 13672 阅读 · 1 评论 -
linux内存映射mmap
linux编程之内存映射一.概述 内存映射是在调用进程的虚拟地址空间创建一个新的内存映射。内存映射分为2种:1.文件映射:将一个普通文件的全部或者一部分映射到进程的虚拟内存中。映射后,进程就可以直接在对应的内存区域操作文件内容!2.匿名映射:匿名原创 2017-08-02 21:56:14 · 493 阅读 · 0 评论 -
linux之printk和printf的区别
大部分常用的C库函数在Linux内核中都已经得到了实现。在所有没有实现的函数中,最著名的就数printf()函数了。内核代码虽然无法调用 printf()函数,但它可以调用printk()函数。printk()函数负责把格式化好的字符串拷贝到内核日志缓冲上,这样syslog程序就可 以通过读取该缓冲区来获取内核信息。printk()的用法很像printf(): printk("Hello原创 2017-09-09 11:43:18 · 4258 阅读 · 0 评论 -
Linux电子书项目之电子书的实现及框架优化(3)
一、整体思路采用分层的思想,面向对象的编程思想。1、怎样在LCD上显示一个文件2、如何组织代码分层的结构main--draw--XXX_manager--fb.c等二、分层编写-底层实现1、显示部分代码编写[cpp] view plain copyshow_file\display\fb.c show_file\display\disp_manager.c show_file\include\...原创 2018-03-07 21:03:25 · 542 阅读 · 0 评论 -
Linux电子书项目之freetype实现矢量字体的显示(2)
上一篇博文我们通过点阵数组实现了字母的显示:http://blog.csdn.net/shenhuan1104/article/details/79476053现在我们通过freetype这个框架在PC和单板LCD上分别实现矢量字体的显示。一、PC上矢量字体的显示(1)矢量字体原理:存储一些关健点,然后通过贝塞尔曲线连接。(2)显示实现过程:给定一个文字,确定它的编码值;根据编码值从字体文件中找到...原创 2018-03-07 20:34:28 · 466 阅读 · 0 评论 -
Linux电子书项目之字符编码与字符的点阵显示(1)
一、字符编码为更好的存储和展示,于是出现了字符编码。下面来看一下字符编码的发展过程。分为三个阶段:阶段1:ASCII码欧美人发明,用一个字节来标志。也就是常说的ASCII码,由于英语中只有26个英文字母,以及常用符号,可以很简单的编码出来。Ox41:A;0x61:a。阶段2:国家编码GB2312(GBK)我们国家有上千的汉子,所以编码要比较多一些,用两个字节来表示一个汉字。对于内地采用GB2312...原创 2018-03-07 20:15:31 · 675 阅读 · 0 评论 -
谈谈我对Linux下“生产者/消费者线程模型”的理解
生产者消费者线程模型常常用于网络编程,即一个线程监听事件发生(生产者,例如产生“收到数据”事件),其他线程来处理事件(消费者,例如处理收到的数据)比较笨的办法是: 消费者线程不停地loop等待数据,当生产者线程发现收到数据时,找一个线程(先不讨论找线程的策略),把“收到数据”这一事件告诉消费者线程。消费者线程会在下一个loop对这个事件进行处理,处理完毕后,继续loop,直到下一个事件到来。但这么...转载 2018-03-06 21:06:19 · 370 阅读 · 1 评论 -
Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是转载 2018-01-27 22:30:07 · 1115 阅读 · 0 评论 -
linuix线程的分离状态(detached)和可结合状态(joinable)
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况转载 2018-01-27 20:17:45 · 391 阅读 · 0 评论 -
动态加载的函数库Dynamically Loaded (DL) Libraries
动态加载的函数库Dynamically loaded (DL) libraries是一类函数库,它可以在程序运行过程中的任何时间加载。它们特别适合在函数中加载一些模块和plugin扩展模块的场合,因为它可以在当程序需要某个plugin模块时才动态的加载。例如,Pluggable Authentication Modules(PAM)系统就是用动态加载函数库来使得管理员可以配置和重新配置身份验证信息原创 2018-01-25 20:15:17 · 696 阅读 · 1 评论 -
IO复用、多进程和多线程三种并发编程模型
I/O复用模型I/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的。在书上看到一个例子来解释I/O的原理,我觉得很形象,如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来做这件事。如果利用某种技术(比如摄像头)把这10根水管的状态情况统一传达到某一点,那么就只需要转载 2018-02-01 13:58:05 · 568 阅读 · 0 评论 -
linux之#if 0 ... #endif用途
在过去都没有去理会#if 的作用,今天突发奇想,开启编译器试一试。很多人都知道,#if 0 ... #endfif的作用跟/*...*/的作用是一样的,就是注释,可是注释为什么不用注释符号/*就行了么?google了一下,大家都说是为了解决嵌套注释。如:/*---------------------------------------------------------------原创 2017-09-09 14:57:54 · 1406 阅读 · 0 评论 -
Makefile中的-Wall -O2 -Os -g等选项介绍
-Wall:选项可以打印出编译时所有的错误或者警告信息。这个选项很容易被遗忘,编译的时候,没有错误或者警告提示,以为自己的程序很完美,其实,里面有可能隐藏着许多陷阱。变量没有初始化,类型不匹配,或者类型转换错误等警告提示需要重点注意,错误就隐藏在这些代码里面。没有使用的变量也需要注意,去掉无用的代码,让整个程序显得干净一点。下次写Makefile的时候,一定加-Wall编译选项。-O0:原创 2017-08-07 20:35:27 · 12735 阅读 · 0 评论 -
linux之getopt 函数详解
命令行参数解析函数 —— getopt()getopt()函数声明如下:#include int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;extern int optind, opterr, optopt;该函数的ar原创 2017-08-07 19:59:14 · 2812 阅读 · 0 评论 -
友善之臂视频监控方案源码学习(5) - 输入控制
转载于http://blog.csdn.net/tandesir/article/details/8437272【问题描述】在友善之臂视频监控方案源码学习(4) - 数据流向一文中,对视频数据流向进行了简要阐述。本文对输入控制进行解析。【解析】1 涉及到的文件和目录mjpg-streamer-mini2440-read-only/start_uvc.shmj原创 2017-07-23 14:06:05 · 563 阅读 · 0 评论 -
LINUX MAN 常用命令/ubuntu man手册完善
文章转自:LINUX MAN 常用命令/ubuntu man手册完善man -f command 显示man程序的所有手册例如:man -f kill man n command 显示指定章节的手册man -a command 显示所有章节的手册man -w command 显示手册所在的路径man -aw command 结合-a参数显示所有章节的手册路径Li转载 2017-07-20 10:49:22 · 1317 阅读 · 0 评论 -
Linux Shell编程入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的S转载 2017-05-17 11:01:14 · 216 阅读 · 0 评论 -
中国开源项目哪家强?看看阿里,百度,腾讯,360等都开...
开源github地址:https://github.com/Qihoo3601.MySQL中间层 AtlasAtlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多My转载 2017-05-03 22:36:12 · 2650 阅读 · 0 评论 -
Cmake卸载安装相关整理
转自:http://www.cnblogs.com/weiqinglan/p/5681539.htmllinux下安装cmake方法(1)---下载压缩包 OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake;还有其它一些软件都需要先安装cmake 1.在linux环境下打开网页浏览器,输入网址:http://www.cmake原创 2017-01-10 14:54:34 · 16257 阅读 · 3 评论 -
ubuntu12.04下安装gcc-4.7 和g++-4.7 笔记
sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-4.7sudo apt-get install g++-4.7OK,安装gcc,g++4.7完毕$which gcc 一下找到目前原创 2017-01-09 21:42:12 · 3375 阅读 · 0 评论 -
GCC 和 cmake的关系?
转载自 : https://www.zhihu.com/question/36609459辉常哥,充电2分钟,装逼5小时27 人赞同1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一转载 2017-01-09 21:39:56 · 1524 阅读 · 1 评论 -
关于老的和新的技术及精神家园
转自:http://www.ituring.com.cn/article/9174关于老的和新的技术“技术的发展要根植于历史,而不是未来。”图灵社区:对于日新月异的新技术,你是什么态度?遇到新技术我会去了解,但不会把很大的精力放在这。这些技术尚不成熟,我只需要跟得住就可以了。我的团队自己想学什么我都不干涉,但是用到项目里的技术,必须是很成熟的,(技术转载 2016-12-14 21:54:01 · 320 阅读 · 0 评论 -
Linux下/proc目录简介
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文转载 2016-12-03 18:56:09 · 281 阅读 · 0 评论 -
Unix传奇(下篇)
转自:http://coolshell.cn/articles/2324.htmlUnix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。由它引发的思想变革,对当今计算机文化造成的深远影响。这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表转载 2016-12-14 21:44:22 · 357 阅读 · 0 评论 -
tiny6410开发板使用NFS访问Ubuntu主机
riendlyArm官方推荐的tiny6410开发环境是Fedora9,相关的NFS配置也是基于Fedora9的,通过Superboot向Nand写入NFS启动参数的方法虽然很方便,但不便于理解NFS原理。但我还是喜欢Ubuntu,以目前最新的Ubuntu 11.04为例来配置开发板的NFS连接吧。我的开发板IP为192.168.1.230 ubuntu系统IP是192.168.1.1转载 2017-07-31 15:29:53 · 499 阅读 · 0 评论 -
Linux中getopt_long_only函数用法详解
[html] view plain copy 在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子。下面介绍使用getopt_long_only和getopt_long(两者用法差不多)解析命令行选项。程序中主要使用:短选项长选项是否需要参数-n-原创 2017-07-22 16:32:26 · 631 阅读 · 0 评论 -
视频监控源码阅读知识基础
基础知识: 条件变量: 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作: 一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。 为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 当程序进入pthread_cond_wait等待后,将会把g_mutex进行解锁, 当离开pthread_con原创 2017-07-22 21:55:44 · 525 阅读 · 0 评论 -
友善之臂视频监控方案源码学习(4) - 数据流向
转载于http://blog.csdn.net/tandesir/article/details/8435162【问题描述】在 友善之臂视频监控方案源码学习(1) - 架构分析一文中,对主程序架构进行了分析。其实,了解视频监控的源码,关键是了解3个问题:(1)数据从何而来;(2)数据如何处理;(3)数据往何处去。本文对数据的流向进行解析。【解析】原创 2017-07-23 14:05:07 · 466 阅读 · 0 评论 -
友善之臂视频监控方案源码学习(2) - 主程序实现细节
转载于http://blog.csdn.net/tandesir/article/details/8373205【问题描述】在 友善之臂视频监控方案源码学习(1) - 架构分析一文中,对程序执行的步骤简单的进行了描述,本文对该过程的一些细节进行总结。【解析】(1) 日志代码日志记录可调用syslog.h提供的syslog,closelog函数。syslog()接口定原创 2017-07-23 14:01:47 · 396 阅读 · 0 评论 -
友善之臂视频监控方案源码学习(1) - 架构分析
转载于http://blog.csdn.net/tandesir/article/details/8373013【说明】对友善之臂的视频监控源码进行学习总结。如有错误,敬请指正。 【学习准备】1 源码:http://download.csdn.net/detail/tandesir/49159052 工具:source insight 33原创 2017-07-23 13:59:39 · 678 阅读 · 0 评论