Linux应用编程
文章平均质量分 81
早起的虫儿灬
这个作者很懒,什么都没留下…
展开
-
I/O复用
多进程与I/O复用之前为了构建并发服务器,采用多进程的方式,一旦有客户端连接就会创建新进场,但由于创建新进场需要耗费大量的CPU资源与内存资源,且进程之间拥有完全独立的内存空间,还需要使用IPC;I/O复用则不需要创建多个进程,采用事件监听的方式,一旦事件发生了才去处理I/O复用https://www.zhihu.com/question/32163005/answer/55772739原创 2017-01-03 19:13:28 · 288 阅读 · 0 评论 -
linux无名管道
管道(无名管道):管道和套接字一样不是属于进程的资源,而是属于操作系统的,因此也就不是fork的对象,fork只是复制了文件描述符。 管道的创建:int pipe(int fd[2]); //成功返回0,失败返回-1;参数:指向意图存放文件描述符的int变量的指针(作参数时退化为指针,无法传递大小)传参时,只需要传递一个元素类型为int大小为2的数组名即可转载 2016-12-30 08:25:36 · 844 阅读 · 0 评论 -
linux线程
进程:硬盘上的一个静态的程序在内存中动态执行的实例 操作系统分配资源的基本单位 每个进程拥有自己独立的内存空间。 在操作系统下构成单独执行流的单位线程:轻量级进程, 是操作系统调度的最小单元, 线程只能存在于进程中, 进程死亡时其中的线程也会死亡 在进程下构成单独执行流的单位使用进程的优势:(1)CPU时分复用,单核心CPU可以实现宏观上的并原创 2017-01-08 12:15:43 · 218 阅读 · 0 评论 -
实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
转自:http://www.cnblogs.com/yuuyuu/p/5103744.html一.基本概念 我们通俗一点讲:Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读转载 2017-01-07 16:20:40 · 341 阅读 · 0 评论 -
epoll边缘触发
条件触发(Level Trigger):只要满足事件发生条件就不停触发,直到不满足触发条件(epoll默认触发方式,select()也是条件触发方式)边缘触发(Edge Trigger):从不满足事件发生条件到满足事件发生条件时触发服务器使用边缘触发:1、需要通过errno全局变量判断错误原因,为了访问errno全局变量,需要包含头文件errno.h 2、使用非阻塞式I/O原创 2017-01-07 15:54:29 · 464 阅读 · 0 评论 -
优于select的epoll
select与epollselect的缺点1、在linux系统下单个进程能打开的文件描述符的最大数量有限制(#define __FD_SETSIZE 1024)2、事件发生后需要遍历注册的所有对象的集合(必须遍历才能知道是谁发生了事件)3、在每次调用select函数时都要向内核拷贝(注册)需要监视的对象信息(由于函数调用之后会修改描述符的集合,因此再次调用时某些对象相当于相当原创 2017-01-07 13:18:10 · 317 阅读 · 0 评论 -
子进程复制了父进程的什么
转自:http://www.cnblogs.com/zhangchaoyang/articles/2317420.html如果你对代码段、数据段、栈、堆存放哪些数据还不是很清楚,请先看我写和Linux 内存管理。有时会出现父子进程变量的地址一样,但值不一样。看下面代码:#include#include#include#includemain(){ ch转载 2016-12-29 08:15:46 · 292 阅读 · 0 评论 -
套接字与标准IO及IO流分离
标准I/O的优点1、具有良好的可移植性(遵从ANSI C标准)2、可以利用缓冲避免频繁的系统调用从而提高性能 使用标准I/O编写操作套接字时的缺点1、 可能频繁调用fflush函数(保证I/O缓冲中的数据及时进入套接字输出缓冲)2、 需要将创建套接字时返回的文件描述符转化为FILE指针 将文件描述符转化为FILE指针FILE *fdopen(int fild原创 2017-01-06 08:05:11 · 541 阅读 · 0 评论 -
标准I/O库
转自:http://blog.csdn.net/kangroger/article/details/38708297标准的I/O是由ANSI C标准规定的,不仅可以在UNIX/Linux上使用,还可以在其他地方使用。标准I/O库对应文件的操作是围绕流(stream)进行的。当用标准I/O库打开或创建文件时,便使一个流与一个文件相关联。标准I/O库的函数对于文件的描述是基于FILE对象指针的转载 2017-01-05 21:12:55 · 211 阅读 · 0 评论 -
文件I/O和标准I/O的区别
转自:http://m.blog.csdn.net/article/details?id=51711231一、先来了解下什么是文件I/O和标准I/O:文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或转载 2017-01-05 19:34:49 · 442 阅读 · 0 评论 -
fcntl函数详解
转自:http://blog.csdn.net/pbymw8iwm/article/details/7974789功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, i转载 2017-01-04 21:58:05 · 212 阅读 · 0 评论 -
linux线程同步
0 概述 所谓同步,就是给多个线程规定一个执行的顺序(或称为时序),要求某个线程先执行完一段代码后,另一个线程才能开始执行。 第一种情况:多个线程访问同一个变量: 1. 一个线程写,其它线程读:这种情况不存在同步问题,因为只有一个线程在改变内存中的变量,内存中的变量在任意时刻都有一个确定的值; 2. 一个线程读,其它线程写:这种情况会存在同步问题,主要是多个线程在同时写原创 2017-01-08 17:13:21 · 479 阅读 · 0 评论