apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。
apue.h内容如下:
-
#ifndef _APUE_H
-
#define _APUE_H
-
-
#define _XOPEN_SOURCE 600 /* Single UNIX Specification, Version 3 */
-
-
#include /* some systems still require this */
-
#include
-
#include /* for winsize */
-
#ifndef TIOCGWINSZ
-
#include
-
#endif
-
#include /* for convenience */
-
#include /* for convenience */
-
#include /* for offsetof */
-
#include /* for convenience */
-
#include /* for convenience */
-
#include /* for SIG_ERR */
-
-
-
#define MAXLINE 4096 /* max line length */
-
-
-
-
-
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
-
-
-
-
-
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
-
-
typedef void Sigfunc(int);
-
-
#if defined(SIG_IGN) && !defined(SIG_ERR)
-
#define SIG_ERR ((Sigfunc *)-1)
-
#endif
-
-
#define min(a,b) ((a) < (b) ? (a) : (b))
-
#define max(a,b) ((a) > (b) ? (a) : (b))
-
-
-
-
-
char *path_alloc(int *);
-
long open_max(void);
-
void clr_fl(int, int);
-
void set_fl(int, int);
-
void pr_exit(int);
-
void pr_mask(const char *);
-
Sigfunc *signal_intr(int, Sigfunc *);
-
-
int tty_cbreak(int);
-
int tty_raw(int);
-
int tty_reset(int);
-
void tty_atexit(void);
-
#ifdef ECHO /* only if has been included */
-
struct termios *tty_termios(void);
-
#endif
-
-
void sleep_us(unsigned int);
-
ssize_t readn(int, void *, size_t);
-
ssize_t writen(int, const void *, size_t);
-
void daemonize(const char *);
-
-
int s_pipe(int *);
-
int recv_fd(int, ssize_t (*func)(int,
-
const void *, size_t));
-
int send_fd(int, int);
-
int send_err(int, int,
-
const char *);
-
int serv_listen(const char *);
-
int serv_accept(int, uid_t *);
-
-
int cli_conn(const char *);
-
int buf_args(char *, int (*func)(int,
-
char **));
-
-
int ptym_open(char *, int);
-
int ptys_open(char *);
-
#ifdef TIOCGWINSZ
-
pid_t pty_fork(int *, char *, int, const struct termios *,
-
const struct winsize *);
-
#endif
-
-
int lock_reg(int, int, int, off_t, int, off_t);
-
#define read_lock(fd, offset, whence, len) \
-
lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len))
-
#define readw_lock(fd, offset, whence, len) \
-
lock_reg((fd), F_SETLKW, F_RDLCK, (offset), (whence), (len))
-
#define write_lock(fd, offset, whence, len) \
-
lock_reg((fd), F_SETLK, F_WRLCK, (offset), (whence), (len))
-
#define writew_lock(fd, offset, whence, len) \
-
lock_reg((fd), F_SETLKW, F_WRLCK, (offset), (whence), (len))
-
#define un_lock(fd, offset, whence, len) \
-
lock_reg((fd), F_SETLK, F_UNLCK, (offset), (whence), (len))
-
-
pid_t lock_test(int, int, off_t, int, off_t);
-
-
#define is_read_lockable(fd, offset, whence, len) \
-
(lock_test((fd), F_RDLCK, (offset), (whence), (len)) == 0)
-
#define is_write_lockable(fd, offset, whence, len) \
-
(lock_test((fd), F_WRLCK, (offset), (whence), (len)) == 0)
-
-
void err_dump(const char *, ...);
-
void err_msg(const char *, ...);
-
void err_quit(const char *, ...);
-
void err_exit(int, const char *, ...);
-
void err_ret(const char *, ...);
-
void err_sys(const char *, ...);
-
-
void log_msg(const char *, ...);
-
void log_open(const char *, int, int);
-
void log_quit(const char *, ...);
-
void log_ret(const char *, ...);
-
void log_sys(const char *, ...);
-
-
void TELL_WAIT(void);
-
void TELL_PARENT(pid_t);
-
void TELL_CHILD(pid_t);
-
void WAIT_PARENT(void);
-
void WAIT_CHILD(void);
-
-
#endif /* _APUE_H */
想要使用,还要进行下面操作,完成相关配置.
在下载src.tar.gz源代码的压缩包。
1、解压至/home/user/目录下
2、修改 Make.defines.linux中的WKDIR=/home/xxx/apue.2e,为WKDIR=/home/user/apue.2e
3、返回至apue.2e目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个命令 :%s/nawk/awk/g
4、make
5、将/home/user/apue.2e/include/apue.h和/home/user/apue.2e/lib/error.c复制到/usr/include目录下
然后就可以方便的使用apue.h编译《unix高级环境编程》的的程序了
阅读(549) | 评论(0) | 转发(0) |