
Linux系统应用编程
文章平均质量分 87
zqixiao_09
这个作者很懒,什么都没留下…
展开
-
Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)
图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。黄色的是数据链路层的头部,一共14字节绿色的部分是IP头部,一般是20字节紫色部分是TCP头部,一般是20字节最内部的是数据包内容黄色部分:链路层目的MAC:当前step目的主机的mac地址源MAC:当前step的源主机的mac地址类型:指定网络层所用的协议类型原创 2016-01-16 10:01:01 · 3381 阅读 · 2 评论 -
Linux多线程编程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux 下pthread的实现是通过系统调用clone()来实现的。clone()是 Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。下原创 2015-12-14 18:00:22 · 23570 阅读 · 7 评论 -
进程调度相关命令解析
进程相关命令1、ps 查看系统中的进程使用方式:ps [options] [--help]说明:显示瞬间进程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义ps命令常用用法(方便查看系统进程)1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有进程。3)ps c 列出程序原创 2016-01-09 22:06:24 · 3006 阅读 · 1 评论 -
Linux time()函数解析
time() 函数语法如下:所需头文件#include 函数原型time_t time(time_t * timer)参数说明timer=NULL时得到机器日历时间;timer=时间数值时,用于设置日历时间;函数返回值机器日历时间 功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实原创 2016-01-09 21:03:23 · 28471 阅读 · 0 评论 -
Linux 系统应用编程——多线程经典问题(生产者-消费者)
“生产者——消费者”问题是Linux多线程编程中的经典问题,主要是利用信号量处理线程间的同步和互斥问题。 “生产者——消费者”问题描述如下: 有一个有限缓冲区(这里用有名管道实现 FIFO 式缓冲区)和两个线程:生产者和消费者,它们分别不停地把产品放入缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者在缓冲区空的时候也不IXUS等待。另外,因原创 2016-01-10 12:47:17 · 12549 阅读 · 2 评论 -
静态库和动态库的分析
在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式。ELF(Executable and Linking Format,可执行连接格式)。 ELF文件格式包括三种主要的类型:可执行文件、可重定向文件、共享库:1、可执行文件(应用程序)可执行文件包含了代码和数据,是可以直接运行的程序。2、可重定向文件(*.o)可重定向文件又称为目标文件,原创 2016-01-05 18:23:43 · 3287 阅读 · 1 评论 -
Linux 系统应用编程——线程基础
传送门:Linux多线程编程实例解析 . linux多线程编程——同步与互斥 . 统多任务操作系统中一个可以独立调度的任务(或称之为顺序执行流)是一个进程。每个程序加载到内存后只可以唯一地对应创建一个顺序执行流,即传统意义的进程。每个进程的全部系统资源是私有的,如虚拟地址空间,文件描述符和信号处理等等。使用多进程实现多任务应用时存在如下问题:1)任务切换,即进程间上下文切换原创 2016-01-07 17:56:42 · 2905 阅读 · 0 评论 -
Linux 系统应用编程——网络编程(常用命令解析)
1、telnet Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。当我们使用Telnet原创 2016-01-13 20:59:35 · 2864 阅读 · 0 评论 -
Linux 系统应用编程——网络编程(I/O模型)
Unix下可用的5种I/O模型:阻塞I/O非阻塞I/OI/O复用(select和poll)信号驱动I/O(SIGIO)异步I/O(POSIX的aio_系列函数)前四种都是同步,只有最后一种才是异步IO。 一个输入操作通常包括两个不同的阶段:1)等待数据准备好;2)从内核向进程复制数据; 对于一个套接字的输入操作,第一步通常涉及等待数据从网络中原创 2016-01-14 18:13:10 · 2855 阅读 · 0 评论 -
Linux 系统应用编程——标准I/O
标准I/O的由来 标准I/O指的是ANSI C 中定义的用于I/O操作的一系列函数。 只要操作系统安装了C库,标准I/O函数就可以调用。换句话说,如果程序中使用的是标准I/O函数,那么源代码不需要任何修改就可以在其他操作系统下编译运行,具有更好的可移植性。 除此之外,使用标准I/O可以减少系统调用的次数,提高系统效率。标准I/O函数在执行时也会原创 2016-01-05 20:12:22 · 2502 阅读 · 0 评论 -
Linux 系统应用编程——出错处理(errno)
1. errno变量 文件 中定义了符号 errno 以及可以赋予它的各种常量,这些常量都是以字符 E 开头。例如,若 errno 等于常量 EACCES,表示产生了权限问题(例如,没有打开所要求文件的足够权限)。 当 UNIX 函数出错时,常常返回一个负值,而且将整型变量 errno 设置成含有附加信息的各个常量。例如,open 函数如果成功执行则返回一个非负文件描述原创 2016-01-04 12:52:40 · 1997 阅读 · 0 评论 -
Linux 系统应用编程——网络编程(TCP 协议三次握手过程)
TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN ( synchronous 建立联机 ) ACK ( acknowledgement 确认 ) PSH ( push 传送 ) FIN ( finish原创 2016-01-16 10:52:45 · 2622 阅读 · 1 评论 -
Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)
(转载自:http://blog.sina.com.cn/s/blog_5ec353710101i892.html) TCP/IP参考模型是一个非常基础,而且也非常重要的基础框架,要想入门数通这是个必须掌握的基本概念,本文档通过一个简单的示例,结合参考模型来分析一下数通的基本过程。 网络环境非常简单,如下图所示,我们现在来分析一下PC去访问Webse原创 2016-01-16 10:20:17 · 2420 阅读 · 3 评论 -
Linux 系统应用编程——进程间通信(上)
现在再Linux应用较多的进程间通信方式主要有以下几种:1)无名管道(pipe)及有名管道(fifo):无名管道可用于具有亲缘关系进程间的通信;有名管道除具有管道相似的功能外,它还允许无亲缘关系进程使用;2)信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程某事件发生。一个进程收到一个信号与处理器收到原创 2016-01-08 19:59:34 · 9909 阅读 · 1 评论 -
Linux 系统应用编程——进程间通信(下)
在前面,我们学习了传统的进程间通信方式——无名管道(pipe)、有名管道(fifo)和信号(signal)。 下面我们来学习 System V IPC 对象:1、共享内存(share memory);2、信号灯(semaohore);3、消息队列(message queue); IPC对象是活动在内核级别的一种进程间通信的工具。存在的IPC对象原创 2016-01-11 18:29:19 · 3330 阅读 · 0 评论 -
Linux 系统应用编程——网络编程(高级篇)
一、网络超时检测 在网络通信过程中,经常会出现不可预知的各种情况。例如网络线路突发故障、通信一方异常结束等。一旦出现上述情况,很可能长时间都不会收到数据,而且无法判断是没有数据还是数据无法到达。如果使用的是TCP协议,可以检测出来;但如果使用UDP协议的话,需要在程序中进行相关检测。所以,为避免进程在没有数据时无限制的阻塞,使用网络超时检测很有必要。1、套接字接收超时原创 2016-01-16 11:23:26 · 4525 阅读 · 0 评论 -
linux多线程编程——同步与互斥
我们在前面文章中已经分析了多线程VS多进程,也分析了线程的使用,现在我们来讲解一下linux多线程编程之同步与互斥。现在,我们不管究竟是多线程好还是多进程好,先讲解一下,为什么要使用多线程?一、 为什么要用多线程技术?1、避免阻塞,大家知道,单个进程只有一个主线程,当主线程阻塞的时候,整个进程也就阻塞了,无法再去做其它的一些功能了。2、避免CPU空转,应用程序经常会涉及到RPC,数原创 2015-12-15 17:18:10 · 6376 阅读 · 0 评论 -
文件I/O和标准I/O的区别
一、先来了解下什么是文件I/O和标准I/O:文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。标准I/O:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件原创 2016-01-01 10:12:41 · 16763 阅读 · 3 评论 -
Linux 系统应用编程——文件I/O
Linux操作系统是基于文件概念的。文件是以字符序列构成的信息载体。根据这一点,可以把I/O设备当做文件来处理,因此,在磁盘上的普通文件进行交互所用的统一系统调用可以直接用于I/O设备。这样大大简化了系统对于不同设备的处理,提高了效率。Linux中的文件主要分为6种:普通文件、目录文件、符号链接文件、管道文件、套接字文件和设备文件。 那么,内核如何区分和引用特定的文件呢?这里用到了原创 2016-01-04 16:20:36 · 1753 阅读 · 1 评论 -
Linux 系统应用编程——进程基础
一、Linux下多任务机制的介绍 Linux有一特性是多任务,多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 多任务操作系统使用某种调度(shedule)策略(由内核来执行)支持多个任务并发执行。事实上,(单核)处理器在某一时刻只能执行一个任务。每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用CPU)时原创 2016-01-06 18:37:01 · 2636 阅读 · 1 评论