Linux编程
习_霜
这个作者很懒,什么都没留下…
展开
-
堆、栈以及多线程
文章出处:http://blog.sina.com.cn/s/blog_7c60861501015vlf.html写的还是很好的,值得一看 一直就搞不清出这个问题,今天上网想起来,随即搜了搜,找到了一些资料。不知源作者是谁。姑且“拿来主义”一下,呵呵。 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配转载 2013-11-30 18:39:45 · 1772 阅读 · 0 评论 -
signal(SIGPIPE, SIG_IGN)
转自:http://blog.163.com/niuxiangshan@126/blog/static/170596595201221942952676/ http://www.360doc.com/content/11/0604/09/4363353_121584610.shtml 我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试转载 2015-12-18 18:14:07 · 546 阅读 · 0 评论 -
ftok()函数的使用
转自:http://blog.csdn.net/achelloworld/article/details/41825643 在上一篇文章中,Mayuyu讲述了共享内存的原理以及使用方法。在创建共享内存之前,必须指定一个ID值,而这个ID值通常是通过现在要讲的ftok()函数得到。ftok()函数原型如下 其中参数fname是指定的文件名,这个文转载 2015-12-23 12:58:03 · 414 阅读 · 0 评论 -
mmap()和fmemopen()的使用
转自:http://blog.csdn.net/achelloworld/article/details/41828033 先来看看mmap()函数,本函数的头文件为#include 和#include 。函数原型如下 返回值:若映射成功则返回映射区的内存起始地址,否则返回MAP_FAILED(-1),错误原因存于errno转载 2015-12-23 13:00:18 · 1244 阅读 · 0 评论 -
CAN总线摘自《Intel凌动平台嵌入式应用与实践》第五章
阅读网址http://book.51cto.com/art/201304/390520.htm 4.5 CAN总线 CAN是控制器局域网络(Controller Area Network,CAN)的简称,由德国BOSCH公司开发,并最终成为国际标准(ISO 11898-1)。CAN总线主要应用于工业控制和汽车电子领域,是国际上应用最广泛的现场总线之一。 4.5.1 CAN总线转载 2015-12-07 16:37:32 · 868 阅读 · 0 评论 -
函数sync、fsync与fdatasync总结整理
转自:http://blog.csdn.net/sishuiliunian0710/article/details/37739385 一、术语解释 脏页:linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,转载 2015-12-25 09:43:39 · 1190 阅读 · 0 评论 -
time_t tm timeval 和 时间字符串的转换
转自:http://blog.csdn.net/ncepubdtb/article/details/38899505,做了一点补充。 1、常用的时间存储方式 1)time_t类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒。 2)tm结构,这本质上是一个转载 2015-12-25 10:49:20 · 4345 阅读 · 0 评论 -
popen()和pclose()
来自:joyfire的笔记,可以参考http://man.lupaworld.com/content/develop/joyfire/system/11.html#I241 库函数:popen()和pclose(); 原型:FILE*popen(char*command,char*type); 返回值:如果成功,返回一个新的文件流。 如果无法创建进程或者管道,返回NULL。转载 2015-12-25 17:56:08 · 933 阅读 · 0 评论 -
IO多路复用之poll总结
转自:http://www.cnblogs.com/Anker/p/3261006.html 1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而转载 2016-02-22 11:25:47 · 317 阅读 · 0 评论 -
IO多路复用之select总结
转自:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html 1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处转载 2016-02-22 11:27:22 · 373 阅读 · 0 评论 -
IO多路复用之epoll总结
转自:http://www.cnblogs.com/Anker/archive/2013/08/17/3263780.html 1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件转载 2016-02-22 11:29:32 · 380 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
转自:http://www.cnblogs.com/Anker/p/3265058.html select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就转载 2016-02-22 11:30:43 · 313 阅读 · 0 评论 -
getopt 短选项实现(部分)
因为要在stm32上用,所以自己实现了一个简单的。 #include #include #include /**获取字符串选项及参数 *@Note 需连续调用该函数返回-1后才可以重新解析新的字符串 *@param optarg:返回参数 *@param buf:输入字符串指令,eg -d 1 -s abc -t 0 -g *@param optstring:待处理的选项字符串,如: "a原创 2016-03-29 18:08:27 · 618 阅读 · 0 评论 -
oops错误分析文章收藏
linux中Oops信息的调试及栈回溯—Linux人都知道,这是好东西! http://blog.csdn.net/kangear/article/details/8217329 Linux内核的Oops http://www.cnblogs.com/wwang/archive/2010/11/14/1876735.html 定位Oo转载 2016-02-24 11:41:05 · 1246 阅读 · 0 评论 -
arm-none-eabi交叉编译工具常用的一些指令
转自:http://blog.csdn.net/a13526758473/article/details/54982817假如目前有三个文件a.c、b.c、ab.lds:1.arm-none-eabi-gccarm-none-eabi-gcc --help 查看帮助信息。arm-none-eabi-gcc -c a.c 生成a.o文件。arm-none-eabi-gcc -g -c a.c 生成...转载 2018-03-15 20:43:54 · 2713 阅读 · 0 评论 -
daemon函数的原理及使用详解
转自http://blog.chinaunix.net/uid-20196318-id-94985.html 其实,linux提供了daemon函数用于创建守护进程 #include int daemon(int nochdir, int noclose); 1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。 2. 当nochdir为0时,daemon将更转载 2015-12-18 17:57:06 · 6029 阅读 · 0 评论 -
linux下core文件调试方法
转自http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。 1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看转载 2015-12-17 15:56:11 · 341 阅读 · 0 评论 -
程序调试--fprintf详解
本篇文章从百度文库获取。 详细讲解linux中fprintf的参数和使用方法 除了人工的分析之外,最简单最直接的调试方法要算printf了。不过,我们这里推荐使用的并不是初学C语言时使用的函数int printf(const char *format, ...),而是稍微复杂一点的fprintf()函数,因为它更方便我们之后重定向错误输出信息到指定的设备。fprintf()函数的原型如下:转载 2013-12-02 13:45:23 · 1269 阅读 · 0 评论 -
pthread_cleanup_push与pthread_cleanup_pop的目的 作用
本文转载于http://blog.csdn.net/slj_win/article/details/7267483 首先你必须知道pthread_cleanup_push与pthread_cleanup_pop的目的(作用)是什么。 比如thread1: 执行 pthread_mutex_lock(&mutex); //一些会阻塞程序运行的调用,比如套接字的accept,等待客转载 2013-12-01 13:27:37 · 822 阅读 · 0 评论 -
程序调试--linux下错误的捕获:errno和strerror的使用
文章出处:http://www.douban.com/note/165931644/ 经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。 在程序代码中包含 #include ,然后每次程序调用失败的时候转载 2013-12-02 13:54:45 · 1261 阅读 · 0 评论 -
进程和线程的区别
文章出处:http://bbs.dospy.com/thread-14199895-1-347-1.html 在提到操作系统和程序运行方式的时候,进程和线程是逃不开的话题,面试中问到,于是回顾总结一下。 概念 进程(process)是指在系统中正在运行的一个应用程序,是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址。一个进程所拥有的数据和变量只属于它自己转载 2013-11-30 18:41:48 · 789 阅读 · 0 评论 -
Kmalloc使用
文章转自:http://blog.csdn.net/flyingdon/article/details/5107346 Kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零。 Flags参数 #include Void *kmalloc(size_t size, int flags); 第一个参数是要分配的块的大小,第二转载 2013-12-04 00:45:32 · 1448 阅读 · 0 评论 -
系统调用mmap--使用详解
本文原始资料来源于网络,经过本人整理如下,仅供学习参考。 一、mmap的用户层应用 void* mmap ( void * start , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再转载 2013-12-04 21:48:08 · 2338 阅读 · 0 评论 -
共享内存---shmget shmat shmdt
文章出处:http://blog.csdn.net/heanyu/article/details/6239459 一、要使用共享内存,应该有如下步骤: 1.开辟一块共享内存 shmget() 2.允许本进程使用共某块共享内存 shmat() 3.写入/读出 4.禁止本进程使用这块共享内存 shmdt() 5.删除这块共享内存 shmctl()或者命令行转载 2013-12-05 17:11:33 · 1118 阅读 · 0 评论 -
select函数
文章转载于http://blog.chinaunix.net/uid-26851094-id-3175153.html select函数: select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型: #include #include int select(int maxfd转载 2013-12-13 15:09:47 · 780 阅读 · 0 评论 -
【C/C++】Linux下使用system()函数一定要谨慎
文章出处:http://my.oschina.net/renhc/blog/53580 曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方转载 2013-12-13 14:29:03 · 899 阅读 · 0 评论 -
Linux信号(signal) 机制分析
转自:http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html 【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安转载 2015-06-24 10:15:13 · 509 阅读 · 0 评论 -
子进程自父进程继承什么或未继承什么
转自:http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043472.html 知道子进程自父进程继承什么或未继承什么将有助于我们。下面这个名单会因为 不同Unix的实现而发生变化,所以或许准确性有了水份。请注意子进程得到的是 这些东西的 *拷贝*,不是它们本身。 由子进程自父进程继承到: 进程的资格(真实(rea转载 2015-06-24 14:56:39 · 489 阅读 · 0 评论 -
解决/usr/bin/ld: cannot find -lxxx
在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息: /usr/bin/ld: cannot find -lxxx 这些讯息会随着编译不同类型的source code 而有不同的结果出来如: /usr/bin/ld: cannot find -lc/usr/bin/ld: cannot find -lltdl/u转载 2015-10-27 15:21:41 · 6472 阅读 · 1 评论 -
uboot编译错误error:no rule to make target include/stddef.h,needed by 'img2srec.o'
make[1]: *** no rule to make target '/usr/lib/gcc/i486-linux-gun/4.3.2//include/stddef.h',needed by 'img2srec.o',stop, make[1]:leaving directory '/usr/local/arm/u-boot-1.3.2/tools' make: *** [tools]转载 2015-12-29 13:58:14 · 2847 阅读 · 0 评论 -
Makefile好助手:pkgconfig
转自:http://blog.csdn.net/absurd/article/details/599813 你在Unix下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你可以取下来用了。这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了。 “Hi,怎么编译不过去?”你还沉浸在那种美妙的感转载 2015-12-15 18:18:38 · 403 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问...转载 2018-03-02 19:01:17 · 246 阅读 · 0 评论