Linux应用编程
文章平均质量分 83
陈伙子
生命应有所坚持,生存当随遇而安
展开
-
ASCII字符点阵和汉字库点阵显示
字符编码方式有ASCII,GBK和Unicode等,ASCII编码方式用 1 byte来表示一个字符,ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。 GBK码用两个字节表示一个汉字。 Un...原创 2018-03-28 10:54:08 · 19892 阅读 · 1 评论 -
进程间通信之UNIX域套接字(UDS)
UNIX域套接字(UDS):UNIX Domain Socket UNIX域socket实现本地进程间通信,需要一个进程作为服务器端,一个进程作为客户端,使用方法有点像socket网络,但又不经过网络底层的那些东西。与网络编程最不一样的地方是服务器端bind的时候用的是sockaddr_un结构,客户端connect的时候用的也是sockaddr_un结构,而不是sockaddr_...原创 2018-06-09 09:08:35 · 11459 阅读 · 0 评论 -
使用socketpair实现父子进程双向通信
socketpair()函数会创建两个socket对象,其文件描述符保存在其第四个参数fds[2]数组中。通信时,父子进程中,其中一进程读写fds[0],另一进程读写fds[1],一进程从fds[0]写,另一进程从fds[1]中读出。反之亦然。读写fds[]的阻塞问题:1、当还没有往fds[1]写数据,尝试从fds[0]读数据时,将阻塞读。2、当往fds[1]写了数据后,并且...原创 2018-06-08 23:56:32 · 978 阅读 · 0 评论 -
进程间通信之共享内存
共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限,大小和最近访问的时间等。该数据结构定义:struct shmid_ds{ struct ipc_perm shm_perm; /* operation permission struct */ s...原创 2018-05-21 00:42:30 · 383 阅读 · 0 评论 -
进程间通信之信号量
信号量主要用于进程间同步,避免并发访问共享资源。 信号量集合数据结构struct semid_ds:在此数据结构中定义了整个信号量集合的基本属性,如访问权限。信号量数据结构struct sem:信号量集合使用指针指向一个由数组组成的信号量单元,在此信号量单元中存储了各信号量的值。它们的定义:信号量集合数据结构:struct semid_ds{ st...原创 2018-05-21 00:11:18 · 427 阅读 · 0 评论 -
进程间通信之消息队列
这两天在复习Linux应用编程,感谢杨宗德老师的书《Linux高级程序设计》,写得非常通俗易懂又不乏严谨,一路看下去非常顺利,即便第三版的书中有些小的编辑错误,但不影响阅读。我这两天的文章的内容大部分来自杨老师的书本,整理了一下。 IPC:进程间通信(Inter Process Communication),指多个进程之间进行数据交换。 system V提供的...原创 2018-05-20 22:32:07 · 9742 阅读 · 6 评论 -
进程间通信之管道
无名管道PIPE:| 无名管道是一种特殊类型的文件,在内核中对应的资源即一段特殊内存空间,内核在这段空间中以循环队列的方式临时放入一个进程发送给另一个进程的信息,这段内核空间完全由操作系统管理和维护,应用程序只需要,也只能使用系统调用来访问它。 | 将两个命令连接起来,如:rpm -qa |grep telnet,把rpm -qa的输出作为 grep telnet ...原创 2018-05-06 22:25:52 · 497 阅读 · 0 评论 -
tslib应用(电子书支持ts输入)
这篇文章把之前写的《freetype实现电子书》代码修改一下,改为用触摸屏输入来进行上下翻页和退出。代码中把触摸屏分为上中下3个区域,分别对应输入的上一页,退出,和下一页。 使用触摸屏的前提是按上一篇《tslib移植和测试》移植好tslib,因为要用到tslib库。系统对触摸屏事件的检测频率非常高,轻轻按一下触摸屏,就会被检测到几次触摸事件。即对我们人来说,我们只按了...原创 2018-05-13 13:00:06 · 884 阅读 · 0 评论 -
进程基本知识
进程环境及进程属性: 进程资源由两部分组成:内核空间进程资源及用户空间资源。内核空间资源即PCB相关的信息,包括进程控制块本身,打开的文件表项、当前目录、当前终端信息,线程基本信息、可访问内存地址空间。PID、PPID、UID、EUID等。也就是说通过PCB可访问该进程所有的资源。用户空间的进程资源包括:通过成员mm_struct映射的内存空间。 用户及进程拥有以下几种...原创 2018-05-06 17:06:57 · 742 阅读 · 0 评论 -
tslib移植与测试
移植tslib到arm上 linux-3.4.2:一、首先编译东山老师之前在linux-2.6.22.6写的s3c_ts.c及其Makefile,以便测试tslib:修改Makefile:把: KERN_DIR = /work/system/linux-2.6.22.6改为:KERN_DIR = /work/system/linux-3.4.2make,出现下面错误:/work/drivers_a...原创 2018-05-12 12:25:15 · 1566 阅读 · 0 评论 -
SIGALRM信号与实时定时
1、alarm()函数单次定时(秒位单位): extern unsigned int alarm(unsigned int __seconds) 每个进程只能有一个闹钟时钟,如果在调用alarm时,以前已为该进程设置过闹钟时钟,而且它还没有超时,则将该闹钟的余留值作为本次alarm函数调用的返回值。以前登记的闹钟时钟则被新值代替。 如果有以前...原创 2018-05-17 12:52:34 · 4552 阅读 · 1 评论 -
进程间通信之信号
信号使用步骤:1、在目的进程中安装信号,需要提供一个信号处理函数。2、信号被某个进程产生。3、操作系统响应信号,在目的进程中被注册。(信号在目的进程中被注册,操作系统将添加信号到目的进程的PCB的未决信号数据结构中)4、信号在进程中注销,进程在执行信号处理函数之前,首先要把信号在进程中注销。 5、信号生命终止,保护上下文,进程捕获信号,即执行信号处理函数。 发送信号函数:...原创 2018-05-17 10:52:18 · 2386 阅读 · 1 评论 -
svgalib安装与应用
svgalib编译安装:一、要先安装libx86-1:http://packages.ubuntu.com/lucid/libx86-1tar xzf libx86_1.1+ds1.orig.tar.gz gunzip libx86_1.1+ds1-6.diff.gzcd libx86-1.1/patch -p1 < ../libx86_1.1+ds1-6.diff make // 出错,修...原创 2018-05-09 22:52:58 · 1471 阅读 · 0 评论 -
HZK16实现电子书
本文用汉字库点阵和ASCII点阵实现电子书,汉字库点阵来自汉字库文件HZK16,ASCII字符点阵来自ASCII字符点阵数组fontdata_8x16,实际上ASCII字符点阵也可以从HZK16文件中获得,本文并没有这样实现,那样可能会好点,有兴趣的朋友可以那样去实现它。 这个电子书只是对我上一篇文章《freetype实现电子书》的代码做了些修改。不一样的地方是:现...原创 2018-05-09 13:56:24 · 1637 阅读 · 0 评论 -
alsa-libs安装与ALSA应用编程
alsa在pc上安装(我安装的是als-lib-1.0.22):1、sudo tar xjf alsa-lib-1.0.22.tar.bz2 2、cd alsa-lib-1.0.22/3、./configure4、make 5、sudo make install这就把alsa-libs库安装好了。下面是一个使用alsa库播放.wav文件的例子main.c:#include<unistd.h&...原创 2018-05-03 07:42:01 · 1479 阅读 · 1 评论 -
freetype安装与应用编程
点阵显示有局限性,如字形固定,大小固定,为解决这些问题,本文介绍应用freetype来显示字体。FreeType库是一个开源的、可移植的字体引擎,它功能强大,简单说就是支持字体的花样显示。 pc上安装freetype库:1、首先自行下载freetype压缩包,我下载的是freetype-2.4.10.tar.bz22、解压:tar xjf freetype-2...原创 2018-04-30 00:52:55 · 6008 阅读 · 0 评论 -
freetype实现电子书
这个电子书的功能很简单,通过在控制台输入"u"/"n"来控制显示上一页,下一页,并且使用轮询方法实现,很占CPU资源,后面我会慢慢改进。源码下载地址:https://download.csdn.net/download/qq_22863733/10399962 总共3个文件:main.c、function.c、function.hfunction.h:#include <...原创 2018-05-08 13:25:01 · 807 阅读 · 0 评论 -
详解getopt()函数
结合一个小例子来说明关于getopt()函数的一些概念,一定要注意区分和理解我下面说的名词,千万不能混淆了。否则就容易概念不清了。#include <unistd.h>#include <stdio.h>int main(int argc, char * argv[]){ int i; int ch; printf("----...原创 2018-05-02 23:40:58 · 32513 阅读 · 1 评论 -
msghdr结构通过UNIX域套接字实现文件描述符的本地传递
本文介绍msghdr结构体借助UNIX域套接字和sendmsg()函数和recvmsg()函数来传递文件描述符,sendmsg()函数和recvfmsg()函数还可以传递其他控制信息,这里不作介绍。函数声明:ssize_t sendmsg(int sockfd,const struct msghdr *msg,int flags);ssize_t recvmsg(int sockf...原创 2018-06-09 23:02:47 · 1271 阅读 · 0 评论