自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (48)
  • 收藏
  • 关注

原创 Linux开发环境搭建(系统、samba、ssh、nfs、开发板挂载)

00-开发环境搭建之win8.1和ubuntu双系统安装01-开发环境搭建之虚拟机安装系统( ubuntu )

2015-08-05 15:46:31 2019

转载 Linux 信号列表

在 Linux 下,每个信号的名字都以字符 SIG 开头,每个信号和一个数字编码相对应,在头文件 signum.h 中,这些信号都被定义为正整数。信号名定义路径:/usr/include/i386-linux-gnu/bits/signum.h要想查看这些信号和编码的对应关系,可使用命令:kill -l列表中,编号为 1 ~ 31 的信号为传统

2015-08-19 10:37:19 1447

转载 Linux 线程浅析

进程和线程的区别与联系在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。为了让进程完成一定的工作,进程必须至少包含一个线程。进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系

2015-08-19 10:36:28 1981

转载 浅谈进程地址空间与虚拟存储空间

早期的内存分配机制在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同时运行多个程序时,操作系统是如何为这些程序分配内存 的呢?下面通过实例来说明当时的内存分配方法:

2015-08-19 10:14:37 1202

转载 Linux 进程调度浅析

概述操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说“某某函数比某某函数效率高XX倍”一样,脱离了实际环境,这些结论是比较片面的。 而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对 TASK_RUNNING 状态的进程进行调度。如果进程不可执行(正在睡眠或其他),那么它

2015-08-19 09:59:57 1529

转载 Linux 进程管理

引言:       在Linux的内核的五大组成模块中,进程管理模块时非常重要的一部分,它虽然不像内存管理、虚拟文件系统等模块那样复杂,也不像进程间通信模块那样条理化,但作为五大内核模块之一,进程管理对我们理解内核的运作、对于我们以后的编程非常重要。同时,作为五大组成模块中的核心模块,它与其他四个模块都有联系。下面就对进程模块进行想写的介绍,首先要了解进程及其相关的概念。其次介

2015-08-19 09:50:01 3694

转载 进程同步与互斥:POSIX有名信号量

在 POSIX 标准中,信号量分两种,一种是无名信号量,一种是有名信号量。无名信号量一般用于线程间同步或互斥,而有名信号量一般用于进程间同步或互斥。它们的区别和管道及命名管道的区别类似,无名信号量则直接保存在内存中,而有名信号量要求创建一个文件。前面我们学习了无名信号量的使用(详情请看《无名信号量》),这里我们学习有名信号量的使用。1)创建一个有名信号量所需头文件:

2015-08-19 09:40:06 3262 1

转载 线程同步与互斥:POSIX无名信号量

信号量概述信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1。信号量主要用于进程或线程间的同步和互

2015-08-19 09:34:31 3208

转载 线程同步与互斥:读写锁

读写锁基本原理当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。在对数据的读写操作中,更多的是读操作,写操作较少,例如对

2015-08-19 09:27:39 4357

转载 线程同步与互斥:互斥锁

为什么需要互斥锁?在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。下面我们用程序模拟一下这个过程,线程一需要打印“ hello ”,线程二需要打印“ world ”,不加任何处理的话,打印出

2015-08-18 09:59:48 13673

转载 多任务的同步与互斥

现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。互斥:是指散步在不同任务之间的若干

2015-08-18 09:56:03 4588 1

转载 线程池

线程池基本原理在传统服务器结构中,常是有一个总的监听线程监听有没有新的用户连接服务器,每当有一个新的用户进入,服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户,当用户与服务器端关闭连接以后,服务器端销毁这个线程。(关于并发服务器更多详情,请看《并发服务器》)。然而频繁地开辟与销毁线程极大地占用了系统的资源,而且在大量用户的情况下,系统为了开辟

2015-08-18 09:53:44 1563 1

转载 线程私有数据

在多线程程序中,经常要用全局变量来实现多个函数间的数据共享。由于数据空间是共享的,因此全局变量也为所有线程共有。测试代码如下:[cpp] view plaincopy#include   #include   #include   #include     int key = 100; //全局变量  

2015-08-18 09:45:23 4225 2

转载 进程和线程的区别与联系

在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。为了让进程完成一定的工作,进程必须至少包含一个线程。进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进

2015-08-18 09:19:04 2774

转载 共享内存

概述共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。共享内存的特点:1)共享内存是进程间共享数据的一种最快的方法。 一个进程向共享的内存区域写入了数据,共享这个内存区域的所有

2015-08-17 11:55:02 10805

转载 消息队列

概述消息队列提供了一种在两个不相关的进程之间传递数据的简单高效的方法,其特点如下:1)消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按消息的类型读取。2)消息队列允许一个或多个进程向它写入或者读取消息。3)与无名管道、命名管道一样,从消息队列中读出消息,消息队列中对应的数据都会被删除。4)每个消息队列都有消息队列标识符,消息

2015-08-17 11:34:11 4155 1

转载 命名管道(FIFO)

命名管道的概述无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看《无名管道》)。为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道、FIFO 文件。命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够

2015-08-17 10:57:18 10546

转载 进程间通信:管道(pipe)

管道的概述管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制。无名管道有如下特点:1、半双工,数据在同一时刻只能在一个方向上流动。2、数据只能从管道的一端写入,从另一端读出。3、写入管道中的数据遵循先入先出的规则。4、管道所传送的数据是无格式的,这要求管道的读出方与写

2015-08-16 23:19:43 7311 1

转载 进程间通信概述

进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication )。进程间通信的目的:

2015-08-16 22:03:24 2068

转载 Linux系统编程——进程替换:exec 函数族

在 Windows 平台下,我们可以通过双击运行可执行程序,让这个可执行程序成为一个进程;而在 Linux 平台,我们可以通过 ./ 运行,让一个可执行程序成为一个进程。但是,如果我们本来就运行着一个程序(进程),我们如何在这个进程内部启动一个外部程序,由内核将这个外部程序读入内存,使其执行起来成为一个进程呢?这里我们通过 exec 函数族实现。exec

2015-08-16 18:33:30 2893

转载 守护进程

什么是守护进程?守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行

2015-08-14 12:15:04 42419 3

转载 孤儿进程

父进程运行结束,但子进程还在运行(未运行结束)的子进程就称为孤儿进程(Orphan Process)。孤儿进程最终会被 init 进程(进程号为 1 )所收养,并由 init 进程对它们完成状态收集工作。孤儿进程是没有父进程的进程,为避免孤儿进程退出时无法释放所占用的资源而变为僵尸进程(什么是僵尸进程,请看《特殊进程之僵尸进程》),进程号为 1 的 init 进程将会接

2015-08-14 11:28:39 3341

转载 浅谈可重入函数与不可重入函数

在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会

2015-08-13 14:15:47 6720 2

转载 Linux系统编程——进程间通信:信号中断处理

什么是信号?信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。“中断”在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给“中断”了,我去签收快递( 处理中断

2015-08-13 12:10:28 5633 1

原创 Linux系统编程——特殊进程之僵尸进程

僵尸进程(Zombie Process)进程已运行结束,但进程的占用的资源未被回收,这样的进程称为僵尸进程。在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。 但是仍然为其保留一定的信息,这些信息主要主要指进程控制块的信息(包括进程号、退出状态、运行时间等)。直到父进程通过 wait() 或 waitpid() 来获取其状态并释放(具体用

2015-08-13 10:38:30 3488 1

原创 ubuntu挂载到开发板某个目录

由于嵌入式Linux开发大多数使用的是交叉编译环境,难免很频繁的将文件在开发板和PC环境( 如ubuntu )之间传递,最方便的方法为挂载NFS。网络文件系统NFS( Network File System )是一种将远程主机上的目录经网络挂载到本地主机的一种机制,如将ubuntu家目录 /home 挂载到开发板的 /tmp 目录。说到挂载,大家可能觉得

2015-08-07 15:45:51 2763 1

原创 arm开发板连接终端( xshell )

开发板型号:s5pv210PC机系统:   win7超级终端工具: xshellxshell安装包下载请点此处。开发板串口连接图:如果使用的是台式机,串口的另一端连接到台式机的后面接口即可。如果使用的是笔记本,现在很多笔记本是不带串口的,我们需要在网上买一根 usb转串口线,将笔记本的一个usb口转换为

2015-08-07 15:44:39 7874 1

原创 Linux 编译器之 GCC

上一节我们学习了 vim 编辑器,接下来我们一起学习 gcc 编译器,这里,我们要区分编辑器和编译器有何不同?编辑器是指我用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解

2015-08-07 15:43:10 1183

原创 SlickEdit 简单使用教程

1)启动 SlickEdit一个终端启动 SlickEdit 后,它还运行着的情况下,另一个终端再启动 SlickEdit 时,需要敲命令:vs +new2)根据需要创键工程a)新建工程( Project —> New )b)根据需要选择要创建工程(这里为 GNU C/C++)

2015-08-07 15:42:02 18562 1

原创 SlickEdit 的安装与配置

SlickEdit 的介绍vim 是公认很好用很完美,但是对新手来说,上手毕竟不是很容易。Windows 下程序员很多都很喜欢Source Insight 这个工具来看代码,各种语法高亮看着很舒服。那在 Linux 平台下,有没有媲美 Source Insight 的编辑器呢?答案就是 SlickEdit。SlickEdit 是一个跨平台(在 9 种不同的工作平

2015-08-07 15:40:59 5633

原创 Linux 常用编辑器之vim

概述vi 编辑器是 Linux 系统中最常用的文本编辑器,vi 在Linux界有编辑器之神的美誉几乎所有的 Linux 发行版中都包含 vi 程序。vi 工作在字符模式下,不需要图形界面,非常适合远程及嵌入式工作,是效率很高的文本编辑器,尽管在 Linux 上也有很多图形界面的编辑器可用,但vi的功能是那些图形编辑器所无法比拟的。那 vim 又是什么呢?

2015-08-07 15:39:42 901

原创 Linux 常用命令的使用

概述很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占

2015-08-07 15:37:48 737

转载 Linux 文件权限简单说明

在 Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问(所有者);允许一个预先指定的用户组中的用户访问(用户组);允许系统中的任何用户访问(其他用户)。所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。通常

2015-08-07 15:35:55 642

原创 Linux 目录结构及文件

在 windows 平台下,打开“计算机”,我们看到的是一个个的盘符:在 Linux 下,我们是看不到这些盘符,我们看到的是文件夹(目录):在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( F

2015-08-07 15:34:47 823

原创 通过xshell远程连接ubuntu

xshell安装包下载请点击此处。由于xshell远程连接ubuntu是通过ssh协议的,所以,需要给ubuntu安装ssh服务器。1)ubuntu安装ssh服务器sudo apt-get install openssh-server2)出现问题时,重启ssh服务即可sudo service ssh res

2015-08-07 15:33:10 9942 3

原创 ubuntu如何设置IP

a) 通过命令进行设置在终端里敲:sudo ifconfig eth0 10.221.20.17 netmask 255.255.255.0注意,eth0 的 “0” 为数字 “0”10.221.20.17:ip地址255.255.255.0:子网掩码查看是否设置成功,在终端敲:ifconfigb) 通过图

2015-08-07 15:28:03 1469

原创 Linux必备软件之SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初

2015-08-07 15:26:34 2025

原创 ubuntu更新设置

ubuntu操作系统发布时,为了减小操作系统的体积,仅仅配备了基本的系统软件、应用软件。我们开发中需要用到的大部分软件都需要在使用中从网上自行更新。如果ubuntu没有网络,可以说寸步难行。下面教大家一下如何使用互联网和局域网进行更新。互联网更新(外网更新)可以上网的虚拟机或物理机,直接可从互联网更新软件。ubuntu默认

2015-08-05 16:25:23 6871 2

原创 Ubuntu 12.04更新源

1、首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份当前的源列表)2、修改更新源sudo gedit /etc/apt/sources.list(打开Ubuntu 12.04源列表文件)3、把里面的内容替换成下面的内容( 根

2015-08-05 15:51:20 2197

原创 通过虚拟机安装系统( ubuntu )

我们这里使用vmplayer player虚拟机,安装包下载请点此处。双击VMware-player-4.0.6-1035888.exe,一路next即可。通过Vmware Player创建虚拟机第一步第二步第三步第四步第五

2015-08-05 15:44:01 1253

gtk读取glade文件

先用glade绘制我们需要的图然后,用gtk读取glade文件,获取glade中的按钮,做相应的事情

2015-07-27

glade中文版windows安装

glade中文版windows安装,绝对好用

2015-07-27

gtk版本的简易计算器

在linux下用gtk实现的简易版计算器,附件中可以在linux下直接运行

2015-07-27

gtk_signal

在linux下实现gtk信号signal处理函数,可以直接运行

2015-07-27

gtk计算器布局练习

在linux下用C语言实现的,可以直接使用

2015-07-26

gtk_固定布局

在linux下用C语言开发,可以直接运行

2015-07-26

gtk_表格布局

在linux下用C 语言实现的gtk表格布局,里面有可执行文件可以直接运行

2015-07-26

gtk_垂直布局(vbox)

linux通过c实现的gtk垂直布局,里面有makefile可以编译直接运行

2015-07-25

gtk水平布局

用C语言实现的gtk水平布局,在linux环境下用gcc编译,可直接运行

2015-07-25

gtk_simple_button

c语言实现简单的button,用gtk编写

2015-07-25

进程退出控制exit

在linux下通过C语言代码来描述进程退出exit、_exit、return之间的区别

2015-06-26

vfork简单介绍

在linux下通过C语言实现了fork与vfork的区别,里面有源码,可以用gcc编译运行分析

2015-06-24

fork的简单使用

在linux下通过代码来说明fork()创建的子进程与父进程之间的关系,以及他们之间独立运行的状态

2015-06-24

获取进程号

用C语言实现获取linux进程中的进程号、父进程号、组进程号

2015-06-24

dup_dup2介绍

在linux中实现dup以及dup2,用C语言实现,里面有可执行文件,直接运行

2015-06-23

文件操作函数

linux下用C实现简单的文件读写操作,里面有源码和可执行代码

2015-06-23

tcp高效率并发服务器

在Linux用C语言编写,,通过epoll实现高效率并发服务器

2015-06-18

epoll_udp服务器

在linux下通过epoll实现udp服务器的同时收发工作

2015-06-18

tcp_poll_ser

linux系统,用C语言编写,,通过poll技术实现比多线程,多进程更加高效的tcp并发服务器

2015-06-17

poll实现udp_qq聊天

在linux下通过C语言的poll函数实现udp聊天程序(同时跟多个用户进行通信,数据收发,灵活切换)

2015-06-17

omnicppcomplete-0.41.zip

vim支持c++补全的插件

2016-05-17

共享内存——shared

在linux实现共享内存的创建、写入数据、读取数据

2015-08-17

消息队列——message

在linux下对消息队列简单的介绍

2015-08-17

pipe管道详解

在linux下介绍pipe常见的问题,并以代码的形式展现

2015-08-16

中断信号处理

该资源描述了信号产生的方式、发送信号、等待信号、处理信号、信号集、信号阻塞集、可靠信号的操作

2015-08-13

僵尸进程介绍以及防范

介绍什么是僵尸进程,以及如何处理僵尸进程

2015-08-13

gtk绘图事件

在linux下用c语言实现的gtk绘图事件

2015-07-30

gtk事件盒子

linux下使用C实现事件盒子,附件里面有源码,可以直接使用

2015-07-30

gtk_属性改变事件

在linux用C语言实现的gtk属性改变事件

2015-07-30

gtk键盘事件

在linux使用C语言实现的gtk键盘事件

2015-07-30

gtk鼠标事件

在linux下编写的gtk鼠标事件,附件有源码代码,直接编译运行

2015-07-30

gtk定时器功能实现

在linux下编写实现的gtk定时器,附件中有源码,可以make编译执行

2015-07-30

gtk背景图片设置

在linux下编写的gtk程序,附件里面有可执行文件和源代码

2015-07-30

gtk_notebook笔记本模式

在linux下编写的gtk_notebook,可以直接运行

2015-07-30

gtk之行编辑操作

在linux下可以直接运行,用c语言编写,gcc编译就行。

2015-07-29

gtk之button的设置

在linux下实现gtk的button按钮的常规设置,里面有可执行代码,可以直接运行

2015-07-28

gtk之进度条练习

在linux下实现的gtk进度条练习,附件中有可执行文件,可以直接运行,也可以用gcc编译器编译运行

2015-07-28

gtk图片资源练习

在Linux实现的gtk图片资源的使用

2015-07-28

gtk_label的简单设置

在linux实现的gtk的label简单设置,gcc编译运行即可

2015-07-27

gtk_窗口设置练习

在linux下实现的gtk窗口练习

2015-07-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除