linux开发
文章平均质量分 74
打怪的蚂蚁
这个作者很懒,什么都没留下…
展开
-
Linux Signal (6): 发送信号的kill和raise 函数
1. 函数说明:kill和raise是用来发送信号的:kill把信号发送给进程或进程组,它不仅可以中止进程,也可以向进程发送其他信号;raise把信号发送给(进程)自身.它们的原型如下:#include #include int kill(pid_t pid, /*指明要发送的信号进程号*/ int signo);/*信号*/int raise(i原创 2009-09-14 08:59:00 · 17372 阅读 · 1 评论 -
如何编写Linux设备驱动程序
一、Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能: 1。对设备初始化和释放。 2。把数据从内核传送到硬原创 2009-09-17 15:23:00 · 565 阅读 · 0 评论 -
Proxy源代码分析--linux网络编程学习
Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作性上更胜一筹。但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是最吸引人的一点,另外Linux强大的功能也是一个非常重要的原因,尤其是Linux强大的网络功能更是引人注转载 2009-09-21 16:00:00 · 477 阅读 · 0 评论 -
linux下Shell编程基础
一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命转载 2009-10-05 16:49:00 · 845 阅读 · 0 评论 -
嵌入式linux多线程编程
linux中的线程是轻量级的线程,linux中的线程调度是由内核调度程序完成的,每个线程有自己的ID号。与进程相比,它们消耗的系统资源少、创建较快、相互间的通信也较容易。linux线程分为两类:一是核心级支持线程,二是用户级的线程。一般都为用户级的线程。一、多线程的几个常见函数要创建多线程必须加载pthread.h文件,库文件pthread。线程的标识符pthread_t在头文件/usr/原创 2009-10-06 15:42:00 · 6741 阅读 · 0 评论 -
linux内核相关基础
一、任务管理linux内核的3种调度方法简介如下:@SCHED_OTHER 分时调度策略,进程的缺省类型,采用动态优先调度策略,选择进程的依据主要是根据进程googness值的大小,这种进程在运行时,可以被高goodness值的进程抢先;@SCHED_FIFO 实时调度策略,先到先服务,遵守POSIX1.b标准的FIFO调度规则,它会一直运行,直到有一个进程因I/O阻塞,或者主动释原创 2009-10-23 15:08:00 · 864 阅读 · 0 评论 -
uClinux内核和标准linux内核的比较
应该说uClinux同标准Linux的最大区别就在于内存管理,支持没有MMU(内存管理单元)的CPU是uClinux与主流linux的基本差异。标准linux是针对有MMU的CPU设计的,有MMU把虚拟地址映射为物理地址,所以标准的linux访问的是虚拟内存。而对uClinux来说,其设计针对没有MMU的处理器,所以无法使用处理器的虚拟内存管理技术,只能直接访问物理内存。uClinux在对物理原创 2009-10-26 14:14:00 · 1536 阅读 · 0 评论 -
linux设备驱动程序——字符设备驱动程序
在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备是指存取时没有缓存的设备。典型的字符设备包括鼠标、键盘、串行口等。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要原创 2009-10-27 14:43:00 · 884 阅读 · 0 评论 -
linux设备驱动程序——网络设备驱动程序
Linux的网络系统主要是基于BSD Unix 的socket机制, 访问网络设备的驱动程序不需要使用设备节点。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统内部支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。因此,选择哪个驱动程序是基于内核内部的其他决定,而不是调用open(),对网络设备的使用通常由系统调用socket接口引入。Linu原创 2009-10-28 14:33:00 · 1353 阅读 · 0 评论 -
linux设备驱动程序——块设备驱动程序
块设备是指数据传输以块为单位的设备,这里硬件的块一般称为“扇区(sector)”,块设备驱动程序提供了面向数据块的设备的访问,支持随机访问的方式,但不可由用户直接访问。关于设备节点、节点文件和设备文件其实都指的是一个东西。block_device_operations结构体在块设备驱动中,有1个类似于字符设备驱动中file_operations结构体的block_device_operat原创 2009-10-28 09:44:00 · 780 阅读 · 0 评论 -
linux内核相关基础(续)
进程进程的特性:独立性、多态性、并发性。并发性和多处理机并行是两个不同的概念。并行指在同一时刻内,有多条指令在多个处理机上同时执行,而并发指在同一时刻内可能只有一条指令执行,但多个进程的指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。一般的,进程的3种状态:就绪态、阻塞态、运行态。在linux中,将各种状态进行了重新组织,由此得出linux进程的几个状态:◎RUNNING:正在原创 2009-10-30 09:15:00 · 569 阅读 · 0 评论 -
嵌入式Linux的文件系统
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。一个系统中可以同时存在不同的文件系统,不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,原创 2009-11-09 11:02:00 · 839 阅读 · 0 评论 -
UNIX Shell编程 学习笔记(一)
Unix只能识别3种基本的文件类型:普通文件、目录文件和特殊文件。统计文件中的单词数:wc命令[root@localhost test]# wc Makefile 22 84 600 Makefile第一个数字表示文件Makefile包含的行数;第二个数字表示文件包含的单词数目;第三个数字表示文件包含的字符数。命令参数:-l 表示显示行数-c 表示显示字符数-w 表示显示单词数显示工作目录原创 2009-12-26 11:50:00 · 589 阅读 · 0 评论 -
UNIX Shell编程总结
1, 文件及权限chmod who [operator] [permission] filename相对模式:operator: +/-permission:r,w,x,l(给文件加锁),s(设置文件宿主或组set_ID),t(粘帖位) 绝对模式:权限: r(2), w(4), x(1)uid: owner(set_uid)(2), group(set_gid)(4), 粘帖位(1)设置uid时原创 2010-01-08 21:14:00 · 2097 阅读 · 0 评论 -
ARM linux进程间通信API
1.管道通信 linux管道主要包括俩种:无名管道和有名管道(FIFO) int pipe(fd[2]) fd[2]是存放管道的两个文件描述符的数组,它只能应用与有血缘关系的两个进程,通信原理是:父进程用这个函数创建一个管道,建好后,此时已经给参数fd数组赋值了,所赋的值就是管道两端的两个文件描述符,一个读管道,一个写管道,但是这样实现的仅是一个进程读写,但是,创建的子进程,原创 2009-09-14 20:40:00 · 1331 阅读 · 0 评论 -
内核同步之自旋锁和信号量
3. 自旋锁Linux内核中最常见的锁是自旋锁。一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁"。如果锁可用,则"锁定"位被设置,而代码继续进入临界区;相反,如果锁被其他进程争用,则代码进入忙循环并重复检查这个锁,直到锁可用为止。这个循环就是自旋锁的"自旋"。自旋锁最多只能被一个可执行的线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环-旋转-等待转载 2009-09-14 15:57:00 · 435 阅读 · 0 评论 -
Linux Signal (7): 捕获信号的alarm和pause函数
1. alarm函数:alarm也称为闹钟函数,一个进程只能有一个闹钟时间,如果在调用alarm之前也设置过闹钟时间,则都会被新值所代替。alarm函数是设置一个计时器, 在计时器超时的时候, 产生SIGALRM信号. 如果不忽略或捕捉此信号, 它的默认操作是终止调用该alarm函数的进程.原型如下:#include unsigned int alarm(unsigned in转载 2009-09-14 09:15:00 · 4226 阅读 · 0 评论 -
Linux Signal (8): sigsetjmp和siglongjmp
进程部分介绍过了setjmp和longjmp函数, 这两个函数在跳转时会带信号屏蔽字跳转, 在信号处理程序(hanlder)中使用longjmp会导致后来产生的这种信号被屏蔽.POSIX.1 也没有具体说明setjmp和longjmp对信号屏蔽字的作用, 而是定义了两个新函数: sigsetjmp和siglongjmp.1. 原型:#include int sigsetjmp(si转载 2009-09-14 09:26:00 · 808 阅读 · 0 评论 -
原子操作和锁
原子操作 在多进程(线程)的操作系统中不能被其它进程(线程)打断的操作就叫原子操作,文件的原子操作是指操作文件时的不能被打断的操作。原子操作是不可分割的,在执行过程中不会被任何其它任务或事件中断。 linux内核提供了一系列函数来实现内核中的原子操作,这些函数又分为两类,分别针对位和整型变量进行原子操作。它们的共同点是在任何情况下操作都是原子的,内核代码可以安全地调用它原创 2009-09-11 21:35:00 · 12943 阅读 · 0 评论 -
Linux Signal (1): 基本概念
信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。1. 信号又称软件中断:信号提供了一种处理异步事件的方法. 每个信号都有一个名字, 他们以SIG开头, 如SIGALRM是闹钟信号, 当由alarm函数设置的计时器超时后产生此信号, 然后由SIGALRM的信号处理函数原创 2009-09-11 22:03:00 · 1089 阅读 · 0 评论 -
linux signal(附常见的信号含义)
SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件 总线错误SIGSEGV 建立CORE文件 段原创 2009-09-11 22:07:00 · 16809 阅读 · 0 评论 -
Linux Signal (2): signal函数
1. 原型:#include void (*signal(int signo, void (*func)(int))(int);成功则返回该信号以前的处理配置, 出错则返回SIG_ERR.参数说明:signo: 信号名, 如SIGINT. func: 对应signo的信号处理函数的函数名, 这个函数没有返回值, 有一个整型参数, 这是捕捉的情况, 当然也可以是以下两种宏原创 2009-09-12 10:34:00 · 1192 阅读 · 0 评论 -
虚拟机下登陆beso_wifi开发板以及安装图形界面gdb调试工具
虚拟机下登陆beso_wifi开发板以及安装图形界面gdb调试工具由于开发,以及偷懒的需要(不想直接安装linux),于是我花了一些时间研究了下如何在VMware的linux下登陆操控开发板。具体过程如下:一.所需软件及硬件:1.beso_wifi开发板(芯片ADSP-BF561,系统uclinux)2.VMware Workstation 6.53.Fedora-11-i386-DV转载 2009-09-12 10:52:00 · 1014 阅读 · 0 评论 -
Linux Signal (3): 信号集
信号集给我们提供了一个能表示多个信号的是数据类型(sigset_t), 它将在sigprocmask, sigpending, sigsuspend之类的函数中用到, 这些函数我会在以后的文章中介绍.1. 信号集相关函数:#include int sigemptyset(sigset_t *set);成功则返回0, 出错则返回-1. 这个函数用作初始化set指向的信号集, 清空其中转载 2009-09-12 10:59:00 · 4519 阅读 · 0 评论 -
Linux Signal (5): 信号屏蔽字
1. 概念:信号屏蔽字就是进程中被阻塞的信号集, 这些信号不能发送给该进程, 它们在该进程中被"屏蔽"了. 后面我们会提到, 实际上它们是被阻塞了.2. 信号屏蔽函数:#include int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);成功则返回0, 出错则返回-1转载 2009-09-13 10:00:00 · 1372 阅读 · 0 评论 -
ARM linux进程控制相关API
1.fork函数 一个现存进程调用f o r k函数是U N I X内核创建一个新进程的唯一方法。fock 的意思是复制进程, 就是把当前的程序再加载一次, 不同之处在,加载后,所有的状态和当前进程是一样的(包括变量)。 fock 不象线程需提供一个函数做为入口, fock后,新进程的入口就在 fock的下一条语句。--------------------------------原创 2009-09-14 19:58:00 · 1220 阅读 · 0 评论 -
ARM linux线程相关API
1. 线程的创建和退出线程的创建是用下面的几个函数来实现的.#include int pthread_create(pthread_t *thread,pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);void pthread_exit(void *retval);int pth原创 2009-09-14 21:08:00 · 1288 阅读 · 0 评论 -
Linux 网络编程基础
(一)Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地转载 2009-09-15 21:25:00 · 522 阅读 · 0 评论 -
Linux 网络编程笔记
1. 基本概念说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为1.物理层(Physical Layer,PH)2.数据链路层(Data Link Layer,DL)3.网络层(Network Layer,N)4.运输层(Transport Layer,T)5.会话层(Session Layer,S)6.表示层(Presentation Layer,P)转载 2009-09-15 21:50:00 · 521 阅读 · 0 评论 -
Linux Awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。a转载 2017-01-04 15:36:05 · 298 阅读 · 0 评论