hello.so的设计
Linux程式设计-15.同步I/O多重处理
http://www.openchess.org/noitatsko/programming/ (2001-05-26 13:04:00)
同步I/O多重处理(Synchronous I/O Multiplexing)
--------------------------------------------------------------------------------
当我们在同时间需要处理许多I/O时,例如网路伺服器socket,有时候一个一个处理,程式非常难写,这时候可以利用select来达成。
--------------------------------------------------------------------------------
#include
#include
#include
int select(int n, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);
FD_CLR(int fd, fd_set *set);
FD_ISSET(int fd, fd_set *set);
FD_SET(int fd, fd_set *set);
FD_ZERO(fd_set *set);
FD_ZERO清除所有fd_set。
FD_SET将fd加入fd_set中。
FD_CLR将fd从fd_set中移除。
FD_ISSET检查fd是否属於该fd_set。
struct timeval {
int tv_sec;
int tv_usec;
};
Linux程式设计-16.TarBall
http://www.openchess.org/noitatsko/programming/ (2001-05-26 14:08:00)
我写了一个targz的函数库,专门处理档案安装的事宜,这个函数库在我写的X Corona Package Installer中使用到。它与zlib一起使用。
targz.h
targz.c
--------------------------------------------------------------------------------
typedef struct {
char name[100];
char mode[8];
char uid[8];
char gid[8];
char size[12];
char mtime[12];
char chksum[8];
char typeflag;
char linkname[100];
char magic[6];
char version[2];
char uname[32];
char gname[32];
char devmajor[8];
char devminor[8];
char prefix[155];
} TarEntry;
GNU Tar档案格式
--------------------------------------------------------------------------------
typedef struct {
char * Package;
char * FileName;
char * path;
gzFile fp;
int size;
int totalsize;
int eXPanding;
int mode;
int result;
TarEntry ** NAME;
} TarBall;
--------------------------------------------------------------------------------
TarBall * tgzOpen(char * Filename,char * mode);
开启一个tarball档,档名为Filename。
mode
"r":为读取模式。
"w":为写入模式。
--------------------------------------------------------------------------------
int tgzLookup(TarBall * tgz);
撷取tarball内档案资讯。