易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux select()详解

Linux select()详解
 
    select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。
文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() and creat() return the new file descriptor”,其实文件句柄就是一个整数,看socket函数的声明就明白了:
int socket(int domain, int type, int protocol);
当然,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdin、stdout、stderr,0就是stdin,1就是stdout,2就是stderr。
比如下面这两段代码都是从标准输入读入9个字节字符:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char ** argv)
{
        char buf[10] = "";
        read(0, buf, 9); /* 从标准输入 0 读入字符 */
        fprintf(stdout, "%s\n", buf); /* 向标准输出 stdout 写字符 */
        return 0;
}
/* **上面和下面的代码都可以用来从标准输入读用户输入的9个字符** */
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char ** argv)
{
        char buf[10] = "";
        fread(buf, 9, 1, stdin); /* 从标准输入 stdin 读入字符 */
        write(1, buf, strlen(buf));
        return 0;
}
   继续上面说的select,就是用来监视某个或某些句柄的状态变化的。select函数原型如下:
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
函数的最后一个参数timeout显然是一个超时时间值,其类型是struct tim


相关文档:

Linux 的多线程编程的高效开发经验

2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......

Linux系统上架设VSFTP服务器实例解析

     
实验环境:AS4最小化安装
实验目标:架设VSFTP服务器
这次我们来学习Linux系统中的 vsftp服务器的配置。
下面我们开始了!首先我们安装vsftp服务器端的软件。
vsftpd服务器的安装文件位于第1张安装光盘中。
使用rpm命名可顺利安装该软件包。
# rpm -ivh vsftpd-2.0.1-5.i386.r ......

Ubuntu 10.04 brings Linux closer to the mainstream

Ubuntu 10.04 brings Linux closer to the mainstream
No Windows viruses. Free. Any questions?
Of course. Start with this one: How can an operation system with those virtues, the open-source Linux, remain confined to a tiny minority of desktop and laptop computers at home?
Linux may run TiVo video r ......

Linux JDK and ANT install

Linux JDK and ANT install
linux JDK的安装

安装JDK
从sun网站上直接下载JDK:http:
//java.sun.com/j2se/1.4.2
/download.html提供了两个下载:
1、RPM in self-extracting file
(j2sdk-1_4_2_04-linux-i586.bin,
32.77 MB) 这个是自解压的文件,在linux上安装如下:

chmod u+x
./j2sdk-1_4_2_04-l ......

Linux 安装SVN

其实Linux下SVN还是比较简单, 在网上, 一搜就是一大把的资料。 但很少有人一次安装成功, 因为Linux中的环境太复杂,
很容易环境冲突。
linux svn一般依赖于httpd(Apache Web服务器).
svn独立方式
当然svn还有独立方式, 即不需要apache服务器, 即跳过下面的apache安装, 及配置中关于httpd.conf部分。
在编译s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号