自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统高级编程系列教程

系统调用01、什么是系统调用?02、Linux系统调用之I/O操作(文件操作)03、文件描述符的复制:dup(), dup2()多进程实现多任务04、进程的介绍05、Linux可执行文件结构与进程结构06、多进程实现多任务(一):fork()07、多进程实现多任务(二):vfork()08、进程的控制:结束进程、等待进程结束09、Linux特殊进

2015-06-23 09:23:25 7599 2

转载 Linux系统编程——进程的控制:结束进程、等待进程结束

一、结束进程首先,我们回顾一下 C 语言中 continue, break, return 的作用:continue: 结束本次循环break: 跳出整个循环,或跳出 switch() 语句return: 结束当前函数而我们可以通过 exit() 或 _exit() 来结束当前进程。所需头文件:#include void exit(int val

2015-06-25 20:08:34 3792

原创 Linux系统编程——vfork() 函数详解

所需头文件:#include #include pid_t vfork(void);功能:vfork() 函数和 fork() 函数(fork()如何使用,请点此链接)一样都是在已有的进程中创建一个新的进程,但它们创建的子进程是有区别的。参数:无返回值:成功:子进程中返回 0,父进程中返回子

2015-06-24 20:02:11 12987 3

转载 Linux系统编程—— fork() 函数详解

需要的头文件:#include #include pid_t fork(void);功能:用于从一个已存在的进程中创建一个新进程,新进程称为子进程,原进程称为父进程。参数:无返回值:成功:子进程中返回 0,父进程中返回子进程 ID。pid_t,为无符号整型。失败:返回 -1。失败的两个主要原因是:1

2015-06-24 16:45:06 2353

转载 Linux 可执行文件结构与进程结构

一、Linux可执行文件结构在 Linux 下,程序是一个普通的可执行文件,以下列出一个二进制可执行文件的基本情况:可以看出,此可执行文件在存储时(没有调入到内容)分为代码区(text)、数据区(data)和未初始化数据区(bss)3 个部分。各段基本内容说明如下:代码区:存放 CPU 执行的机器指令。通常代码区是可共享的(即

2015-06-24 14:12:59 3040

转载 Linux系统编程——进程管理

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

2015-06-24 11:53:49 1447

转载 Linux系统编程——进程调度浅析

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

2015-06-24 11:23:40 1231

原创 Linux系统编程——进程介绍

一、进程概述我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。程序是存放在存储介质上的一个可执行文件,而进程是程序执行的过程。进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,进程是动态的。在 Linux 系

2015-06-23 20:15:25 3484 1

原创 Linux系统编程——文件描述符的复制:dup()和dup2()

dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把新的钥匙,这样的话,旧的钥匙和新的钥匙都能开启这把锁。对比于 dup(), dup

2015-06-23 13:51:43 3891

原创 Linux系统编程——系统调用之 I/O 操作(文件操作)

一、文件描述符在 Linux 的世界里,一切设备皆文件。我们可以系统调用中 I/O 的函数(I:input,输入;O:output,输出),对文件进行相应的操作( open()、close()、write() 、read() 等)。打开现存文件或新建文件时,系统(内核)会返回一个文件描述符,文件描述符用来指定已打开的文件。这个文件描述符相当于这个已打开文件的标号,文件描述符是非

2015-06-23 11:15:59 5113

原创 浅谈标准I/O缓冲区

转自:http://blog.csdn.net/tennysonsky/article/details/43490985标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是它的缓冲。标准I/O提供了三种类型的缓冲:

2015-06-23 09:35:23 1764

转载 Linux系统编程——Linux系统调用

系统调用概述系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给

2015-06-23 09:28:59 3928

原创 Linux网络编程——tcp并发服务器(epoll实现)

通过epoll实现tcp并发回执服务器(客户端给服务器发啥,服务器就给客户端回啥)代码如下:#include #include #include #include #include #include #include #include #include #include #include #define OPEN_MAX 100int main(int arg

2015-06-18 20:26:13 19897 9

原创 Linux网络编程——I/O复用函数之epoll

一、epoll概述epoll 是在 2.6 内核中提出的,是之前的 select() 和 poll() 的增强版本。相对于 select() 和 poll() 来说,epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的 copy 只需一次。二、epoll操作过程需

2015-06-18 10:01:00 3387 1

原创 Linux网络编程——tcp并发服务器(poll实现)

想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》代码:#include #include #include #include #include #include #include #include #include #include #include #define OPEN_MAX 100int main(int

2015-06-17 17:13:27 6066

原创 Linux网络编程——I/O复用之poll函数

一、回顾前面的selectselect优点:目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点select缺点:1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd 很多时会很大,同时每次调用 select() 都需要在内核遍历传递进来的所有 fd,这个开销在 fd 很多时也很大。2

2015-06-17 15:09:04 19606 3

原创 Linux网络编程——tcp并发服务器(I/O复用之select)

与多线程、多进程相比,I/O复用最大的优势是系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。

2015-06-16 16:10:51 5604 1

原创 Linux网络编程——I/O复用之select详解

一、I/O复用概述I/O复用概念:解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调I/O复用使用的场合:1.当客户处理多个描述符(通常是交互式输入、网络套接字)时,必须使用I/O复用。2.tcp服务器既要处理监听套接字,又要处理已连接套接字,一般要使用I/O复用。3.如果一个服务器既要处

2015-06-15 17:46:49 5894 3

原创 Linux网络编程——tcp并发服务器(多线程)

tcp多线程并发服务器多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。线程与进程不同的是:一个进程内的所有线程共享相同的全局内存、全局变量等信息,这种机制又带来了同步问题。tcp多线程并发服务

2015-06-15 15:27:04 22478 5

原创 Linux网络编程——tcp并发服务器(多进程)

一、tcp并发服务器概述一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求)。并发服务器设计技术一般有:多进程服务器、多线程服务器、I/O复用服务器等。二、多进程并发服务器在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器。多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求。父进程继续等待其它客户的请求。这种方法的

2015-06-15 15:02:24 12549 3

原创 Linux网络编程14——tcp、udp迭代服务器

服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一

2015-06-15 10:26:30 3255

转载 因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?

因特网使用的IP协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠,那为什么当初不直接把它设计为可靠的?先打一个比方。邮局寄送的平信很像无连接的IP数据报。每封平信可能走不同的传送路径,同时平信也不保证不丢失。当我们发现收信人没有收到寄出的平信时,去找邮局索赔是没有用的。邮局会说:“平信不保证不丢失。怕丢失就请你寄挂号信”。但是大家并不会将所有的信件都用挂号

2015-06-13 09:24:02 2978 2

原创 Linux网络编程--tcp服务器

一、做为 TCP 服务器需要具备的条件呢?具备一个可以确知的地址( bind() ):相当于我们要明确知道移动客服的号码,才能给他们电话;让操作系统知道是一个服务器,而不是客户端( listen() ):相当于移动的客服,他们主要的职责是被动接听用户电话,而不是主动打电话骚扰用户;等待连接的到来( accept() ):移动客服时刻等待着,来一个客户接听一个。接收端使用 bind(

2015-06-12 09:48:39 4304 1

转载 TCP 通信过程中各步骤的状态

状态图 1状态图 2对于上面的图 N 多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下 TCP 建立连接的三次握手过程,以及关闭连接的四次握手过程,详情请看《浅

2015-06-11 17:57:16 6209

原创 Linux网络编程——浅谈 TCP 三次握手和四次挥手

三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此

2015-06-11 16:12:58 7985 5

原创 TCP网络编程中connect()、listen()和accept()三者之间的关系

一、tcp编程的核心步骤

2015-06-10 16:39:46 6296 4

原创 Linux 网络编程——TCP编程之客户端

一、TCP概述TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 具有以下特点:1)电话系统服务模式的抽象2)每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程3)可靠、出错重传、且每收到一个数据都要给出相应的确认,保证数据传输的可靠性

2015-06-08 14:05:15 5051 1

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关注的人

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