Linux C
ZM_iTUDOU
爱高跟,也爱跑鞋,喝茶也喝酒。
展开
-
Linux 多线程编程(一)
Linux 多线程编程 线程(Thread)已被许多操作系统所支持,包括Windows/NT ,Linux以前的多线程其实是多进程,而现在意味着一个进程中有多个线程 使用多线程的原因(多线程的优点):1.“节省”,启动一个新的进程需要分配给它独立的地址空间,建立众多的数据表来维护他的代码段,堆栈段和数据段,这是一种“昂贵的多任务操作方式”。运行在一个进程中的多个线程,使用相原创 2016-09-28 21:53:54 · 1188 阅读 · 1 评论 -
Linux 进程通信之 共享内存
Linux进程间通信 共享内存 一.共享内存基本概念共享内存是被多个进程共享的一部分物理内存,也是进程间共享数据最快的方法。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。共享内存并未提供同步机制原创 2016-10-28 23:24:59 · 527 阅读 · 0 评论 -
Linux 进程通信之 消息队列
Linux 进程通信之 消息队列 在之前自学linux时,曾简单总结过Linux 进程通信(http://blog.csdn.net/ky_heart/article/details/52733354),现在,已经系统的学习了,决定详细的总结一下。 一.消息队列基本概念消息队列就是一个消息的链表。每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中原创 2016-10-27 23:23:16 · 335 阅读 · 0 评论 -
Linux学习之 嵌入式数据库
嵌入式数据库一.数据库综述数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。数据库技术主要研究如何存储、使用和管理数据;n 有结构的:数据是按一定的模型组织起来的。n 集成的:数据库中集中存放着企业各种各样的数据。n 可共享的:数据库中的数据可以被不同的用户使用。n 统一管理的原创 2016-10-31 19:22:03 · 2615 阅读 · 0 评论 -
Linux 进程间通信总结
Linux 进程间通信通信目的:² 数据传输 一个进程需要将它的数据发送给另一个进程² 资源共享 多个进程之间共享同样的资源² 通知事件 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件² 4.进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时原创 2016-10-23 23:40:56 · 664 阅读 · 0 评论 -
Linux 文件操作
一.Linux文件操作1.什么是文件?Linux如何看待文件?文件: 以实现某种功能、或某个软件的部分功能为目的而定义的一个单位。可通过操作系统或者程序对外提供信息,也能对内输入信息,可以被创建,删除。Linux一切皆是文件 2.如何来操作文件?在Linux中对目录和设备的操作都等同于对文件的操作,都是使用文件描述符来进行的。 3.什么是文件描述符?linux内原创 2016-10-22 21:27:15 · 494 阅读 · 6 评论 -
Linux网络编程
Linux网络编程Linux的优点之一就是在于它丰富而稳定的网络协议栈,其范围是从协议无关层(如通用的socket层接口和设备层)到各种网络协议的实现原创 2016-10-06 16:39:53 · 600 阅读 · 0 评论 -
Linux基础学习(二)
第三章 Linux安装与多重启动技巧 硬盘,由最小的单位扇区组成,数个扇区组成一个磁柱,最后构成整个硬盘容量大小。 硬盘 —— 主引导扇区 包括 启动管理程序和硬盘分区表—— 实际数据文件 第四章 开机,关机,在线求助与指令输入指令输入格式: 显示日历的指令:cal计算器:bc 默认bc仅输出整数原创 2016-09-20 19:20:11 · 219 阅读 · 0 评论 -
Linux基础学习(一)
第一章 Linux是什么与如何学习 1.1从Unix到Linux 1.2Linux到底是什么核心(Kernel)内核,是操作系统的最底层的东西,掌握硬件资源的工作状态。核心的基本功能:System call interface (系统调用接口)Process interface(过程控制)Memory management(内存管理)File system原创 2016-09-18 19:50:11 · 264 阅读 · 0 评论 -
嵌入式C学习笔记(三)嵌入式开发选择C语言的原因
嵌入式开发选择C语言的原因l 嵌入式软件平台的内核是由C语言实现的。 l 嵌入式选用C语言也基于C语言的特点:1. C语言的可移植性好,即移植到另一平台上运行时,所需修改的代码少。C语言在不同的软件平台,拥有相同的语法。在不同的硬件平台下同样适用。所以C语言可以在不同体系结构的软硬平台执行。2. C语言灵活紧凑,使用灵活的语法机制,并能直接访问硬件。C语言中,我原创 2016-07-11 00:05:01 · 734 阅读 · 0 评论 -
嵌入式C学习笔记(二) 编译器-GCC的工作过程
工作流程:gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)· 编译(Compiling)· 汇编(Assembling)· 链接(Linking)以hello.c为例子,在这四个步骤中可以设置选项分别生成hello.i, hello.s, hello.o以及最终的hello文件:hello.c : 最初的源代码文件;hello.i :原创 2016-07-06 23:13:40 · 912 阅读 · 0 评论 -
嵌入式C学习笔记(一)嵌入式概述
一.什么是嵌入式?嵌入式:在已有的硬件平台上,移植操作系统之后,做应用/系统软件的开发。 只要操作系统不变,硬件无论怎么改变,软件都不变嵌入式与非嵌入式的区别:是否移植操作系统 二.操作系统是什么?操作系统的作用是什么?操作系统:从资源管理的角度,操作系统是为了合理、方便地利用计算机系统,而对其硬件资源和软件资源进行管理的软件。作用:管理资源(硬件/软件资源)原创 2016-07-06 23:10:49 · 555 阅读 · 0 评论 -
Linux多线程通信
Linux 多线程通信 一.进程与线程进程通信:资源分配的最小单位有独立的地址空间,十分耗内存。 线程通信:程序执行的最小单位无独立的地址空间(多任务操作模式,多线程共享地址空间,节省开销) 线程间有方便的通信机制(共享数据,有独立堆栈和局部变量) 二.多线程API1.pthread_create函数的作用:原创 2016-10-31 01:04:21 · 621 阅读 · 0 评论 -
Linux学习之 多路复用
Linux学习之 多路复用 一.多路复用基本概念IO多路复用是指内核一旦发现进程的一个或者多个IO条件准备读取,它就通知该进程。在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。二.多路复用的优点:原创 2016-10-29 01:53:37 · 450 阅读 · 0 评论 -
Linux多线程编程(二)线程同步之条件变量
Linux多线程编程(二)线程同步之条件变量 条件变量是利用线程间共享的全局变量同步的一种机制。操作:一个线程等待“条件变量的条件成立”而挂起,另一个线程使得“条件成立”(给出条件成立信号)。因为条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,所以条件变量总是互斥量同时使用。使用时,条件变量被用来阻塞一个进程,当条件不满足时,线程往往解开相应的互斥锁并等待原创 2016-09-29 21:05:55 · 318 阅读 · 0 评论 -
Linux多线程编程(三)线程同步之互斥量
线程之间对资源的竞争:互斥量Mutex 信号灯Semaphore 条件变量Conditions 1. 互斥量Mutex线程在取出头节点前必须要等待互斥量,如果此时有其他线程已经获得该互斥量,那么该线程将会阻塞在这里.只有等到其他线程释放掉该互斥量后,该线程才有可能得到该互斥量。互斥量从本质上说就是一把锁, 提供对共享资源的保护访问原创 2016-09-30 23:28:32 · 346 阅读 · 0 评论 -
Linux多线程编程(三)互斥锁和信号量编程例子
线程二此时和线程一应该是并发的执行 ,这里是一个要点,为什么说是线程此时是并发的执行,因为此时不做任何干涉的话,是没有办法确定是线程一先获得执行还是线程二先获得执行,到底那个线程先获得执行,取决于操作系统的调度,想刻意的让线程2先执行,可以让线程2一出来,先sleep一秒。原创 2016-10-01 09:40:13 · 1518 阅读 · 0 评论 -
Linux进程通信 有名管道实现守护进程
有名管道实现守护进程问题:如果一个进程出现了问题怎么判断它是否在运行?能否重启这个进程?尝试用守护进程操作。 解决方案:有名管道实现守护进程 守护进程(主进程)一直读取管道信息,进行后台监测 若一段时间未读到,认为子进程挂掉——>杀死子进程——>捕捉信号SIGCHLD确定进程已不存在——重新创建新的子进程子进程(前台进程)管道写入 守护进程(daem原创 2016-10-26 23:41:40 · 739 阅读 · 0 评论 -
Linux多线程编程(四)线程同步之信号量
信号量是一个特殊类型的变量,它可以被增加或者减少。信号量是一个原子操作。(原子操作是指不会被线程调度机制打断的操作。这种操作一旦开始,就一直运行到结束,中间不会切 换到另一个线程)原创 2016-10-02 23:10:43 · 352 阅读 · 0 评论 -
Linux进程间通信编程(一)管道和信号
进程间通信的目的:1. 数据传输:一个进程需要将它的数据发送给另一个进程2. 资源共享:多个进程之间共享同样的资源3. 通知事件:一个进程需要向另一个或一组进程发送消息,通知他们发生了某种事件4. 进程控制:有些进程需完全控制另一个进程的执行,此时控制进程希望能够拦截另一进程的所有操作并能及时知道他的状态改变原创 2016-10-03 13:09:42 · 687 阅读 · 0 评论 -
Linux进程间通信编程
3.消息队列消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式.进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息. 优点:比信号传送的信息量多 能传送有格式的字节流原创 2016-10-04 12:26:49 · 601 阅读 · 0 评论 -
Linux进程间控制编程
进程与程序程序是放到磁盘的可执行文件进程是指程序执行的实例v 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制v 进程是暂时的,程序是长久的:进程是一个状态变化的过程,程序可长久保存v 进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)v 进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。原创 2016-10-05 19:04:02 · 263 阅读 · 0 评论 -
Linux文件编程
Linux文件编程 系统调用所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务原创 2016-10-07 09:31:35 · 283 阅读 · 0 评论 -
Linux c 通讯录+数据库
#include #include #include #include void interface(){ system("clear"); printf("\n"); printf("\n"); printf(" |***********************************************|\n"); p原创 2016-11-01 10:49:12 · 1134 阅读 · 0 评论 -
Linux 网络通信 API详解
TCP/IP分层模型OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4原创 2016-11-06 23:09:07 · 2740 阅读 · 0 评论 -
生产者和消费者问题
这是一道学习linux时候的历史遗留问题。。。题目:用线程实现:生产者与消费者: 一个缓冲区,两个线程:生产者和消费者,一个放入缓存一个从缓存取数据,生产者在满时等待,消费者在空时等待,两者互斥执行。实现:用一个有名管道myfifo作为缓存,因为两者互斥执行,所以myfifo属于临界资源。 而对临界资源的互斥与同步要用信号量来解决。 使用3个信号量,一个二值信号量(mutex )控制是否允许对原创 2017-08-09 20:55:21 · 452 阅读 · 0 评论