- 博客(39)
- 资源 (1)
- 收藏
- 关注
转载 Linux 进程间通信 ---- 信号(signal)
本文转载至:https://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html 【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理...
2019-07-30 21:12:02
951
原创 Linux 进程环境 ---- 僵尸进程、孤儿进程
僵尸进程产生的原因: 在UNIX系统中,一个进程结束了,但是他的父进程没有等待(调用wait/waitpid)他,那么他将变成一个僵尸进程。僵尸进程是一个早已死亡的进程,但在进程表(process table)中仍占一个位置。僵尸进程查看方式: 1、通过top命令查看zombie字段,能显示僵尸进程的个数 2、通过ps aux/-ef 参数查看僵尸进程的具体信息,带有...
2019-07-22 19:19:17
176
原创 Linux 进程间通信 ---- 共享内存
共享内存: 共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。但是他不提供任何同步功能...
2019-07-21 10:38:21
214
原创 Linux 进程间通信 ---- 命名管道(FIFO文件/name pipe)
命名管道出现的背景: 命名管道(FIFO文件/name pipe),之前提到的管道,虽然能够实现进程间的通信,但是局限性也很明显。首先,这个管道只能在具有血缘关系的进程之间通信;第二,他只能实现一个进程写,一个进程读,而如果需要两者同时进行时,就得重新打开一个管道。 为了使任意两个进程之间能够通信,就提出了命名管道命名管道的特点: 1、与管道的区别:提供了一个路径名与...
2019-07-21 10:35:45
927
原创 Linux 进程间通信 ---- 管道
管道(pipe): 常说的管道(pipe)也叫匿名管道,管道的作用于有血缘关系的父子进程或者兄弟进程,通过fork来传递。调用pipe()函数时,会再内核开辟一块缓冲区(称为管道)用于通信,大小为64KB(手动测出来的,只写不读,最多能写65520字节),它有一个读端一个写端,然后通过fd参数传出给用户程序两个文件描述符,fd[0]指向读端,fd[1]指向写端。所以管道在用户程序看起来就像...
2019-07-21 10:31:44
156
原创 Linux 进程环境 ---- 进程组、会话、前台进程组、后台进程组、终端控制
进程组与会话的相关概念: 进程组是一组相关关进程的集合,会话是一組相关进程组的集合。进程都有父进程,父进程也有父进程,这就形成了一个以ini进程为根的家族树。除此以外,进程还有其他乘次关系:进程、进程组、会话。进程组合会话在进程之前形成了两级的层次:进程组是一组相关进程的集合,会话是一组相关进程组的集合。 这样说来,一个进程会有如下ID: .PID:进程的唯一标识。对于多...
2019-07-21 10:29:16
1400
2
原创 Linux 进程环境 ---- 守护进程
守护进程概念: Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和...
2019-07-21 10:20:32
263
翻译 模块学习之————LED驱动
fl2440字符设备led驱动首先要明白字符设备驱动注册的基本流程当我们调用insomd命令加载驱动后,驱动程序从module_init函数开始执行:硬件初始化 -> 申请主次设备号 -> 定义fops(file_operations)结构体 -> 申请cdev结构体并把fops结构体嵌入cdev结构体中与之绑定 -> cdev字符设备的注册。有一点需要明确的是,在Linux内
2016-10-13 03:59:12
831
原创 QT学习之路————QT程序在开发板上显示 中文字体
前言:真的蛋疼,本来是挺简单的,但是久了不用就会忘记,所以写个博客记录一下咯就只有一点:在开发板上执行QT程序的时候加上一个参数:-fn unifont例如:./xatch -qws -fn unifont 这样就能显示中文啦
2016-07-20 13:18:21
1424
原创 QT学习之路————使用QT自带的QSqlDatabase类简单操作sqlite数据库
前言:这是用QT自带的QSqlDatabase类操作sqlite数据库,并且用tabView 显示数据库查询结果一、新建一个QT工程二、在工程里添加一个tabView控件,还有一个Button控件三、下面就是.cpp文件的代码,比较简单就不一步一步介绍了#include "dialog.h"#include "ui_dialog.h"#include
2016-07-19 15:32:42
8419
原创 QT学习之路————C语言操作sqlite数据库
前言:首先在这里并不是用QT自带的QSqlDatabase类来操作数据库,而是用纯C语言操作,因为QT是支持C/C++混合编程的,若想看QSqlDatabase类操作数据库,请查看我的博客。一、新建个QT工程二、在.Pro文件里添加sqlite3库文件链接LIBS += -lsqlite3三、在.cpp文件中添加头文件#include
2016-07-19 15:17:41
1092
翻译 数据库学习之————sqlite3数据库常用函数
1、打开数据库: API函数: int sqlite3_open( const char *filename, /* 数据库文件路径(UTF-8编码) */ sqlite3 **ppDb /* 输出: SQLite 数据库句柄 */ ); int sqlite3_open16( const void *filename
2016-07-14 13:08:43
1705
原创 Linux嵌入式之————Linux下安装SQLite3数据库
一、安装sqlite31、下载最新版的sqlite3,网址:http://www.sqlite.org/download.html下载sqlite-autoconf-3130000.tar.gz2、下载成功后解压并安装tar -zxvf sqlite-autoconf-3130000.tar.gzcd sqlite-autoconf-3130000./configurem
2016-05-24 22:08:57
2594
1
原创 Linux嵌入式之————网络编程socket
1、socket简介Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。门面模式,用自己的话说,就是系统对外界提供单一的接口,外部不需要了解内部的实现socket起源于Unix,而
2016-04-15 20:40:11
725
原创 QT学习之路————常用控件、常用操作(持续更新中。。。)
TextEdit控件:获取控件中的行数(PS:其实是读取控件中有多少个换行符)int textline=ui->textEdit->document()->lineCount();读取首行内容: QTextCursor txtcur= ui->textEdit->textCursor(); txtcur.setPosition(0); txtcu
2016-03-28 13:53:43
3616
原创 Linux下的时间函数:获取和设置时间的函数
/********************************************************************************* * Copyright: (C) 2016 huangan * All rights reserved. * * Filename: settime.
2016-03-21 21:10:24
448
原创 QT学习之路————重写键盘事件
1、新建Gui工程2、在头文件中添加:#include protected: void keyPressEvent(QKeyEvent * e);3、在.cpp中重写键盘事件void Dialog::keyPressEvent(QKeyEvent *e){ if(e->key()==Qt::Key_NumberSign) ui->BJ->setFocus
2016-03-21 20:44:17
8739
1
原创 CentOS6.5中修改yum源
前面因为yum源的问题,下载东西都下载不了,然后就百度了一下得到一个修改yum源的方法,在这里记录一下1. cd /etc/yum.repos.d2. mv CentOS-Base.repo CentOS-Base.repo.backup3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo4. mv
2016-03-19 20:36:49
534
原创 QT学习之路————定时器的使用
1、新建一个Gui工程在UI界面上添加一个lable控件2、在头文件中添加如下内容: #include private slots: void timerupdate();3、在.cpp文件的构造函数中添加:QTimer *timer=new QTimer(this); //创建一个定时器connect(timer,SIGNAL(timeout()),th
2016-03-18 15:07:33
3023
原创 QT学习之路————QT窗体去掉标题栏后不能移动的问题
QT程序去掉标题栏后我又哭了,因为它不能移动了,这就有点操蛋了,于是我就百度了一下,参照了别人的做法,最后实现了无标题栏窗口的移动,顺便记录下来。具体方法如下:(1)在头文件中添加如下代码:#include protected: void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e
2016-03-16 20:03:36
4211
2
原创 QT学习之路————QT程序在开发板上旋转
这是一个Transformed:driver not fond1、在虚拟机下搭建QT编译环境(既安装:qt-everywhere-opensource-src-4.6.4)在虚拟机刚开始搭建QT编译环境的时候,记得要在qtconfigure.sh脚本里添加ransformed驱动23 -qt-gfx-transformed \ 24 -qt-gfx-linuxfb \2、在
2016-03-14 22:57:11
1562
原创 QT学习之路————QT界面的美化
1、隐藏窗口的标题栏(包括最小化、最大化、关闭按钮)只需要在构造函数中添加 setWindowFlags(Qt::FramelessWindowHint); 函数即可
2016-03-13 15:16:40
29379
1
原创 QT学习之路————如何创建一个线程
1、简介 Qt中的QThread类提供了平台无关的线程。一个QThread代表了一个在应用程序中可以独立控制的线程,它与进程中的其他线程分享数据,但是是独立执行的。相对于一般的程序都是从main()函数开始执行,QThread从run()函数开始执行。默认的,run()通过调用exec()来开启事件循环。要创建一个线程,需要子类化QThread并且重新实现run()函数。 每一
2016-03-13 14:04:13
13761
1
原创 SIM900B GPRS模块 ————PPP拨号上网
1、编辑内核,使其支持PPP拨号上网Device Drivers ---> Network device support --->
2016-03-13 13:17:43
937
原创 SIM900B GPRS模块————打电话、发短信、接电话
1、简介 SIM900B是一款新型无线模块,属于B2B类型的四频GSM/GPRS模块,采用非常强大的AMR926EJ-S单芯片处理器,可完全兼容于SIM300/340 。其性能稳定,外观小巧,性价比高,能满足您的多种需求。SIM900B采用工业标准接口,工作频率为GSM/GPRS 850/900/1800/1900MHz,可以低功耗实现语音、SMS、数据和传真信息的传输。2、A
2016-03-13 12:03:14
6818
1
原创 fl2440开发板上用其他文件系统格式化除根分区以外的分区————例ubifs文件系统格式化apps分区2、
1、开发板上查看有关mtd和ubi的接口:cat /proc/mtd:可以看到当前系统的各个mtd情况,cat /proc/partitions: 分区信息,有上面的类似ls /dev/*, 查看设备节点2、在开发板上mtd3加载ubifs文件系统(1)ubiattach /dev/ubi_ctrl -m 3 -----将mtd3与ubi建立连接系
2015-11-01 19:10:42
678
原创 在开发板上移植是第三放程序————例lrzsz
移植第三方程序有几种情况一 .如果源码包有Makefile文件,直接改Makefile,修改CC, AS, LD, CFLAGS,INST_PATH..二.源码包没有Makefile文件,但有configure/config文件:1.设置 CC, LD ,AS, LDFLAGS ,AR,RANLIB等环境变量,如下面的lrzsz命令移植中的CC=/opt/build
2015-11-01 15:40:13
518
原创 移植UBI的5号错误————UBI error: ubi_io_write: error -5 while writing 512 bytes to PEB 0:512, written 0 byte
UBI error: ubi_io_write: error -5 while writing 512 bytes to PEB 0:512, written 0 bytes查阅include/asm-generic/error.h发现5号错误的定义为“#define EIO 5 /* I/O error */”。在http://www.linux-mtd.infradead.org/f
2015-10-31 19:55:22
1984
原创 移植tslib库出现ts_open: No such file or directory
执行./ts_calibrate 时出现ts_open: No such file or directory ts_open: No such file or directory 那就是环境变量export TSLIB_TSDEVICE=/dev/event0 的路径不对 改好了就行了
2015-10-30 17:46:02
5116
原创 centos安装dropbear ————没有发现zlib库
1.安装dropbear之前,先安装zlib库yum install zlib* gcc make不然会出现missing install zlib
2015-10-30 10:15:03
432
原创 执行做jffs2的build.sh脚本错误————/usr/bin/ld: cannot find -lc
执行gcc静态编译程序时报错:/usr/bin/ld: cannot find -lccollect2: ld returned 1 exit statusmake: *** [gcc_dry2] Error 1原因:程序链接需要静态库,系统没有安装静态库导致报错解决:安装静态库#sudo yum install glibc-static
2015-10-30 10:12:12
486
原创 QT学习之路(二)————Linux下搭建qt程序编译环境、开发板上搭建qt程序运行环境
为了搭建这个环境,我把我的虚拟机都重装了,最后终于成功!!!!!!人都不不好了。。好了 话不多说,切入正题。。注意:搭建环境之前,先要安装tslib库,安装方法详见我的博客:http://blog.csdn.net/huangan_xixi/article/details/49448929否则会出现错误。。。我用的QT库的版本是:qt-everywhere-opensource-s
2015-10-28 19:12:29
3490
原创 QT学习之路(一)————移植tslib库到开发板
这东西我做了好久, 也出现了很多问题,不把它写到博客上真的是对不起我自己,所以,我一做完就来写博客了!注意:移植tslib库之前要先把开发板的屏幕驱动移植好,屏幕驱动的移植详见我的博客:http://blog.csdn.net/huangan_xixi/article/details/49430807第一步、下载源码我用的是tslib-1.4.gz.bz2版本的(其实我也是在学长的指导
2015-10-27 15:28:33
3024
原创 ARM9开发板FL2440移植Linux-3.0内核————触摸屏的移植
因为内核linux-3.0已经有支持触摸屏的驱动,我们只需要将略做修改使其支持s3c-2440就行了很简单;第一步修改源代码:1、vim arch/arm/mach-s3c2440/mach-smdk2440.c添加头文件 #include 找个合适的位置添加以下结构体/* Touch Screen driver info add by liucheng
2015-10-26 22:22:25
1318
原创 Linux学习过程中做过的东西总结
1、移植了u-boot;2、制作的根文件系统;3、移植了Linux-3.0内核;4、给内核添加dm9000网卡驱动;5、给内核添加LCD驱动;6、给内核添加MMC支持;7、给内核添加USB驱动;8、给内核添加触屏驱动;
2015-10-26 11:01:29
371
原创 ARM9开发板FL2440移植Linux-3.0内核————MMC和LCD驱动
一、mmc支持很简单,linux内核中提供了,所以直接选上这些选项,重新编译就行了。 Device Drivers ---> MMC/SD/SDIO card support ---> MMC block device driver Samsung S3C SD/MMC Card Interface support二、添加LCD支持
2015-10-25 20:33:23
602
原创 ARM9开发板FL2440移植Linux-3.0内核————dm9000网卡的移植
第一步、修改内核代码vim arch/arm/mach-s3c2440/mach-smdk2440.c#include //添加DM9000网卡的头文件并添加如下代码/* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */#define DM9000_BASE (S3C2410_
2015-10-25 20:24:03
471
原创 Linux一些命令总结
启动及关闭iptables 设置iptables开机启动chkconfig iptables onchkconfig iptables off即时启动iptablesservice iptables start即时关闭iptablesservice iptables stopdu -h [文件名] //查看文件大小
2015-10-25 20:19:38
365
原创 ARM9开发板FL2440移植Linux-3.0内核————添加USB驱动
前言: 本开发板内核版本为Linux-3.0此文章只是介绍USB移植的过程,对于Linux内核自带驱动的移植一般分为两个步骤:1、修改代码,将USB初始化;2、修改Linux内核配置,使其支持USB第一步、对代码的操作进入内核的mach-smdk2440.c (路径为:linux-3.0/arch/arm/mach-s3c2440/mach-smdk244
2015-10-25 19:14:31
1532
1
socket.zip
2016-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人