文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应0表示标准输入1表示标准输出2表示标准错误输出>默认为标准输出重定向,与 1>相同2>&1意思是把 标...
分类:
系统相关 时间:
2014-10-01 21:27:51
阅读次数:
278
lienhua342014-09-291 标准 I/O 流之前学习的都是不带缓冲的 I/O 操作函数,直接针对文件描述符的,每调用一次函数可能都会触发一次系统调用,单次调用可能比较快捷。但是,对于需要频繁进行 I/O 操作的程序,频繁触发系统调用产生的消耗太大。标准 I/O 库提供了带缓冲的 I/O...
分类:
其他好文 时间:
2014-10-01 13:56:41
阅读次数:
206
??
1 epoll
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并、发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Read...
分类:
其他好文 时间:
2014-10-01 01:34:50
阅读次数:
370
??
1 select
A:select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开
的文件描述符个数并不能改变select监听文件个数
B:解决1024以下客户端时使用select是很合适的,但如果链接客户端过多,select采用的是轮询模型,会大大降低服务器响应效率,不应在select上投入更多精力
2
依赖的头文件
...
分类:
其他好文 时间:
2014-10-01 00:12:10
阅读次数:
215
??
1 poll
A
依赖的头文件
#include
B
函数声明
int poll(struct pollfd *fds, nfds_t nfds,int timeout);
struct pollfd {
int fd; /*
文件描述符*/
short events; /*
监控的事件*/
short revents...
分类:
其他好文 时间:
2014-09-30 23:55:20
阅读次数:
204
摘要:本文主要讨论文件控制fcntl函数的基本应用.dup函数可以复制文件描述符,而fcntl函数与dup函数有着异曲同工之妙.并且还有更加强大的功能,可以获取或设置已打开文件的性质,操作文件锁....
分类:
其他好文 时间:
2014-09-30 21:18:08
阅读次数:
291
stdin->STDIN_FILENO->键盘stdout->STDOUT_FILENO->屏幕要让进程的标准输入或标准输出重定向,有两种方式:1.重定向到一个文件,该文件用路径标志:freopen2.重定向到一个文件描述符:dup2dup2是让fd2与fd1共享文件表项。例如,为了让标准输入重定向...
分类:
其他好文 时间:
2014-09-29 21:18:11
阅读次数:
193
嵌入式Linux应用程序开发详解华清远见本文只是阅读文摘。创建一个守护进程的步骤:1、创建一个子进程,然后退出父进程;2、在子进程中使用创建新会话---setsid();3、改变当前工作目录---chdir();4、重新设置文件权限掩码---umask();5、关闭所有的文件描述符---close(...
分类:
系统相关 时间:
2014-09-28 10:40:31
阅读次数:
285
在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果...
分类:
编程语言 时间:
2014-09-28 10:16:41
阅读次数:
189
??
1多进程并发服务器
使用多进程并发服务器时要考虑以下几点:
A.父最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)
B.系统内创建进程个数(和内存大小相关)
C.进程创建过多是否降低整体服务性能(进程调度)
2.案例说明
server.c,代码如下:
#include
#inclu...
分类:
其他好文 时间:
2014-09-28 01:16:00
阅读次数:
320