
Application
漫步的风暴
敏于思而慎于言
展开
-
linux应用编程笔记(4)静态函数库和动态函数库使用
摘要:总结了静态函数库和动态函数库的含义和用法,通过实例演示了制作静态函数库和动态库的过程。一、什么是静态库函数和动态库函数 linux当中进行编程的时候,我们会使用很多的函数,例如open,read等等,这些函数一部分由库函数提供,一部分是系统调用。函数库呢,主要分为静态函数库和动态函数库。 静态函数库:静态函数库我们需要的库会被编译到程序当中去,当程序运行起来之原创 2015-09-28 13:05:33 · 1473 阅读 · 0 评论 -
linux应用编程笔记(14)共享内存编程
摘要: 总结了共享内存的定义,给出了使用共享内存的使用步骤,分析了使用共享内存需要使用的shmget,shmat,shmdt,shmctl函数,最后给出一个实例加深理解。一、什么是共享内存 这个字面意思其实就已经很好理解了,就是多个进程共享同一块内存,这个我们一个进程往这个内存中写入一定的数据,其他进程就可以立即受到反馈,可以去读取,访问,或者作出什么修改。共享内存就是被多个进原创 2015-12-03 11:18:11 · 981 阅读 · 0 评论 -
linux应用编程笔记(16)多线程编程函数全解析
摘要: 总结了多线程编程的基础,并对常用的多个函数进行了总结,每个函数配例子加深理解。一、多线程基础 线程技术很早就被创建,但是真正应用时间是在八十年代,较早的Unix中一个进程只允许有一个线程,现在多线程技术已经被运用到多个操作系统中,windows/nt,还有linux。 引入线程的优势: 第一、和进程相比,线程是轻量级的,在linux下,一个进程被创原创 2015-12-14 21:55:58 · 673 阅读 · 0 评论 -
linux应用编程笔记(12)信号量详解及互斥编程
摘要: 总结了信号量的机制,以及各个信号量操作的函数,最后通过公示栏问题,将信号量机制引入加深了理解。一、什么是信号量 信号量的主要用途是保护临界资源,进程根据信号量用于判断能否访问某些共享资源,除了用于访问控制以为,还可以用于进程间的同步。当信号量的值只能取0或者1的时候,叫二值信号量,当可以取任意非负值的时候叫做计数信号量。二、公示栏问题 有一个公示栏,甲乙原创 2015-11-26 21:10:53 · 920 阅读 · 0 评论 -
linux应用编程笔记(13)信号量同步编程
摘要: 总结了进程间同步的机制,如何利用同步机制处理消费者和生产者的问题,最后用实例加深了理解。一、什么是进程间的同步 进程间的同步,指的是一组并发进程,相互合作,相互等待,使得各自按照一定的顺序执行的过程称为进程间的同步。二、生产者消费者的问题 这个问题的描述如下:有一群生产者进程在生产消息,并将此 消息提供给消费者进程去消费。为使生产者进程和消费者进原创 2015-11-26 21:50:51 · 857 阅读 · 0 评论 -
linux应用编程笔记(15)消息队列编程
摘要: 总结了消息队列的定义,详解了使用消息队列的常用函数,最后给出一个实例加深理解。一、什么是消息队列 由于linux早期的通信机制只有信号量,但是信号量所能够传递的数据量非常小,并且管道只能传送无格式的字节流,这样就越来越不能满足应用编程的需求,于是消息队列被开发出来克服了这些缺点。 消息队列本质是一个消息链表,可以把消息看做一个记录,其具有特定的格式,进程可以原创 2015-12-09 17:38:45 · 589 阅读 · 0 评论 -
linux应用编程笔记(10)有名管道编程
摘要: 总结了有名管道和普通文件的区别,有名管道的各种操作函数,最后给出一个读写实例加深理解。一、有名管道 有名管道FIFO被创建之后,操作和文件类似,和有名管道一样,数据写进去读走,读走之后就没有了,不同的是以下两点: 1.读取Fifo文件的进程只能以”O_RDONLY”方式打开fifo文件。 2.写Fifo文件的进程只能以”O_WRONLY”方式打开f原创 2015-10-15 17:10:34 · 793 阅读 · 0 评论 -
linux应用编程笔记(9)无名管道编程
摘要: 总结了Linux下进程通讯目的,通讯方式,IPC的概念,分析了管道和无名管道的使用方法,最后通过一个实例加深理解!一、Linux进程通讯目的 Linux是一个多进程系统,各个进程之间会存在通讯的问题,通讯的目的有以下几种: 1.数据传输 一个进程需要将数据发送给另一个进程。 2.资源共享 多个进程可能会共享同一块内存上的数据。原创 2015-10-15 13:03:39 · 593 阅读 · 0 评论 -
linux应用编程笔记(3)addr.c分析linux应用程序地址布局
摘要:通过编写一个例程addr.c,总结分析了linux应用程序的地址布局,包括代码段,数据段,BSS段,堆(heap)和栈(stack)的分布,分析了程序在运行之后,各个变量常量动态申请分配的内存分别在什么位置。一、程序的构成及内存分布 linux应用程序的构成包括:代码段,数据段,BSS段(未初始化数据段),堆和栈。 上面组成部分当程序在linux中运行的时候,原创 2015-09-24 16:32:05 · 924 阅读 · 0 评论 -
linux应用编程笔记(8)多进程程序设计
摘要: 总结了进程控制理论,getpid的用法,多进程程序设计中创建进程,等待进程,退出进程,fork和vfork的区别,exec函数族的用法,每个总结给出一个实例加深理解。一、进程控制理论 关于进程的互斥,同步,竞争,死锁,调度策略,优先级等,之前有一篇帖子已经介绍了,链接地址如下: http://blog.youkuaiyun.com/deep_l_zh/article/d原创 2015-10-13 16:19:14 · 680 阅读 · 0 评论 -
linux应用编程笔记(2)core dump分析内核链表使用后free出现的错误
摘要:介绍了core dump的功能,使用方法和步骤,最后用其分析了访问空指针,只读内存以及内核链表使用中出现的错误。一、core dump是什么 coredump又叫做核心转存,当程序在运行中出现错误的时候,发生异常,linux系统可以把出错时候的内容存储在一个core文件中,这个过程就叫做core dump。我们在有了这个文件之后,再联合gdb,可以找出错误,节省了人力和原创 2015-09-23 23:16:51 · 1754 阅读 · 0 评论 -
linux应用编程笔记(1)gdb调试方法及如何找出dbg.c程序中的错误
摘要: 介绍了gdb调试器以及其使用流程,总结了常用的几个gdb调试命令,最后使用这些方法找出dgb.c文件中的错误。一、gdb简介 gdb是gnu发布的一款功能强大的程序调试工具,其主要功能有如下三个: 1.启动被调试的程序。 2.让被调试的程序在指定的位置停住。 3.当程序停住时,可以检查程序状态,例如变量的值。 我们在gcc编译原创 2015-09-22 16:55:01 · 5518 阅读 · 0 评论 -
linux应用编程笔记(7)时间编程
摘要:介绍了Linux下时间编程的两个时间类型,以及常用的api函数和用法,最后用一个例子进行了加深理解。一、两个时间类型 1.格林威治时间:Coordinated Universal Time(UTC)是世界标准时间,即常说的格林威治标准时间(GreenwichMean Time,GMT).格林威治时间和我们本地时间是不一样的。 2.日历时间:日历时间(Calen原创 2015-10-10 16:24:37 · 651 阅读 · 0 评论 -
linux应用编程笔记(11)信号通信
摘要: 总结了信号处理流程,信号种类,以及信号处理函数,最后给出一个实例加深理解。一、信号处理流程 信号是Linux当中一种很古老的进程间的通信机制,通信的流程为: 第一步:进程A选择信号; 第二步:进程A发送信号; 第三步:进程B处理信号。二、信号种类 Linux当中的信号类型有很多种,目前应该是有63种,前31种不支持排原创 2015-10-19 10:37:32 · 962 阅读 · 0 评论 -
linux应用编程笔记(6)库函数方式实现文件复制编程
摘要:介绍了库函数文件编程常用的函数,打开,关闭,写,读,定位等,最后通过一个实例将这些函数都运用了一边,加深理解。一、库函数文件编程常用函数 1.fopen(打开文件) 头文件 #include 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开原创 2015-09-30 19:19:28 · 1629 阅读 · 0 评论 -
linux应用编程笔记(5)系统调用文件编程方法实现文件复制
摘要:介绍了系统调用文件编程常用的函数,以及学习这些函数的一般步骤,最后通过一个实例使用上述函数实现了文件复制功能。一、系统调用文件编程常用函数 创建 int creat(const char *filename, mode_t mode); 参数mode指定新建文件的存取权限。 打开 int open(const char *原创 2015-09-29 15:51:11 · 3017 阅读 · 2 评论 -
malloc、memalign和valloc
转载:https://blog.youkuaiyun.com/lvwx369/article/details/41726415在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用memalign或valloc。这些函数在头文件“stdlib.h”中声明。在GNU库中,可以使用函数free释放memalign和vallo...转载 2018-11-01 14:12:22 · 3199 阅读 · 0 评论