在看UNIX环境高级编程是,碰到一个头文件"apue.h",搜一下别人的帖子,其实apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。

apue.h内容如下:

  1. #ifndef _APUE_H
  2. #define _APUE_H
  3. #define _XOPEN_SOURCE   600  /* Single UNIX Specification, Version 3 */
  4. #include <sys/types.h>       /* some systems still require this */
  5. #include <sys/stat.h>
  6. #include <sys/termios.h>     /* for winsize */
  7. #ifndef TIOCGWINSZ
  8. #include <sys/ioctl.h>
  9. #endif
  10. #include <stdio.h>     /* for convenience */
  11. #include <stdlib.h>    /* for convenience */
  12. #include <stddef.h>    /* for offsetof */
  13. #include <string.h>    /* for convenience */
  14. #include <unistd.h>    /* for convenience */
  15. #include <signal.h>    /* for SIG_ERR */
  16. #define MAXLINE 4096               /* max line length */
  17. /*
  18. * Default file access permissions for new files.
  19. */
  20. #define FILE_MODE   (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
  21. /*
  22. * Default permissions for new directories.
  23. */
  24. #define DIR_MODE    (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
  25. typedef void   Sigfunc(int);   /* for signal handlers */
  26. #if defined(SIG_IGN) && !defined(SIG_ERR)
  27. #define SIG_ERR ((Sigfunc *)-1)
  28. #endif
  29. #define min(a,b)     ((a) < (b) ? (a) : (b))
  30. #define max(a,b)     ((a) > (b) ? (a) : (b))
  31. /*
  32. * Prototypes for our own functions.
  33. */
  34. char    *path_alloc(int *);              /* Figure 2.15 */
  35. long     open_max(void);                 /* Figure 2.16 */
  36. void     clr_fl(intint);               /* Figure 3.11 */
  37. void     set_fl(intint);               /* Figure 3.11 */
  38. void     pr_exit(int);                   /* Figure 8.5 */
  39. void     pr_mask(const char *);          /* Figure 10.14 */
  40. Sigfunc *signal_intr(int, Sigfunc *);    /* Figure 10.19 */
  41. int      tty_cbreak(int);                /* Figure 18.20 */
  42. int      tty_raw(int);                   /* Figure 18.20 */
  43. int      tty_reset(int);                 /* Figure 18.20 */
  44. void     tty_atexit(void);               /* Figure 18.20 */
  45. #ifdef  ECHO    /* only if <termios.h>  has been included */
  46. struct termios  *tty_termios(void);      /* Figure 18.20 */
  47. #endif
  48. void     sleep_us(unsigned int);             /* Exercise 14.6 */
  49. ssize_t  readn(intvoid *, size_t);         /* Figure 14.29 */
  50. ssize_t  writen(intconst void *, size_t);  /* Figure 14.29 */
  51. void     daemonize(const char *);            /* Figure 13.1 */
  52. int      s_pipe(int *);                 /* Figures 17.6 and 17.13 */
  53. int      recv_fd(int, ssize_t (*func)(int,
  54. const void *, size_t));/* Figures 17.21 and 17.23 */
  55. int      send_fd(intint);             /* Figures 17.20 and 17.22 */
  56. int      send_err(intint,
  57. const char *);        /* Figure 17.19 */
  58. int      serv_listen(const char *);     /* Figures 17.10 and 17.15 */
  59. int      serv_accept(int, uid_t *);     /* Figures 17.11 and 17.16 */
  60. int      cli_conn(const char *);        /* Figures 17.12 and 17.17 */
  61. int      buf_args(char *, int (*func)(int,
  62. char **));            /* Figure 17.32 */
  63. int      ptym_open(char *, int);    /* Figures 19.8, 19.9, and 19.10 */
  64. int      ptys_open(char *);         /* Figures 19.8, 19.9, and 19.10 */
  65. #ifdef  TIOCGWINSZ
  66. pid_t    pty_fork(int *, char *, intconst struct termios *,
  67. const struct winsize *);      /* Figure 19.11 */
  68. #endif
  69. int     lock_reg(intintint, off_t, int, off_t); /* Figure 14.5 */
  70. #define read_lock(fd, offset, whence, len) \
  71. lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len))
  72. #define readw_lock(fd, offset, whence, len) \
  73. lock_reg((fd), F_SETLKW, F_RDLCK, (offset), (whence), (len))
  74. #define write_lock(fd, offset, whence, len) \
  75. lock_reg((fd), F_SETLK, F_WRLCK, (offset), (whence), (len))
  76. #define writew_lock(fd, offset, whence, len) \
  77. lock_reg((fd), F_SETLKW, F_WRLCK, (offset), (whence), (len))
  78. #define un_lock(fd, offset, whence, len) \
  79. lock_reg((fd), F_SETLK, F_UNLCK, (offset), (whence), (len))
  80. pid_t   lock_test(intint, off_t, int, off_t);     /* Figure 14.6 */
  81. #define is_read_lockable(fd, offset, whence, len) \
  82. (lock_test((fd), F_RDLCK, (offset), (whence), (len)) == 0)
  83. #define is_write_lockable(fd, offset, whence, len) \
  84. (lock_test((fd), F_WRLCK, (offset), (whence), (len)) == 0)
  85. void    err_dump(const char *, ...);        /* Appendix B */
  86. void    err_msg(const char *, ...);
  87. void    err_quit(const char *, ...);
  88. void    err_exit(intconst char *, ...);
  89. void    err_ret(const char *, ...);
  90. void    err_sys(const char *, ...);
  91. void    log_msg(const char *, ...);         /* Appendix B */
  92. void    log_open(const char *, intint);
  93. void    log_quit(const char *, ...);
  94. void    log_ret(const char *, ...);
  95. void    log_sys(const char *, ...);
  96. void    TELL_WAIT(void);        /* parent/child from Section 8.9 */
  97. void    TELL_PARENT(pid_t);
  98. void    TELL_CHILD(pid_t);
  99. void    WAIT_PARENT(void);
  100. void    WAIT_CHILD(void);
  101. #endif  /* _APUE_H */

想要使用,还要进行下面操作,完成相关配置.

在http://www.apuebook.com/下载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高级环境编程》的的程序了

apue.h头文件(UNIX环境高级编程)的更多相关文章

  1. UNIX环境高级编程 apue.h头文件的配置

    http://jimslinbing.blog.163.com/blog/static/85054319201292712414518/ 1.到http://www.apuebook.com下载源码2 ...

  2. (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  4. UNIX环境高级编程--#include "apue.h"

    apue.h头文件为作者自己编写而非系统自带,故需要自行添加! 第一:打开网站 http://www.apuebook.com/第二:选择合适的版本(一共有三个版本,根据书的版本选择)下载源码sour ...

  5. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. UNIX环境高级编程(第三版)关于apue.h的用法

    UNIX环境高级编程(第三版)中的例子用到apue.h这个头文件,但是书里面写的地址已经不能访问. 经过一番查找之后,找到如下解决方案: 1.到www.apuebook.com上下载第2版的源码,也可 ...

  7. 《UNIX环境高级编程第三版》apue.h等源码文件的编译安装

    操作系统:Ubuntu 12/14 1.下载书中的源代码:点击下载 2.编译 tar -zxvf *.tar.gz cd ./apue.3e make 报错: can,t find -lbsd 解决办 ...

  8. APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)

    操作环境:RHEL7.0 部署apue.h实例运行环境 1.下载头文件src.3e.tar.gz 2.解压 tar zxvf src.3e.tar.gz 3.创建普通用户(我仿照书上创建的sar用户) ...

  9. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

随机推荐

  1. 4个强大的Linux服务器监控工具[转]

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...

  2. TCP/IP协议全解析 三次握手与四次挥手[转]

    所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.所谓四次挥手(Four-Way Wavehand) ...

  3. ABP官方文档翻译 2.7 对象到对象的映射

    对象到对象的映射 介绍 IObjectMapper接口 AutoMapper集成 安装 创建映射 自动映射属性 自定义映射 MapTo扩展方法 单元测试 预定义映射 LocalizeableStrin ...

  4. UCS业务知识介绍

    企业融合网关是集路由.交换.防火墙.VPN.IP PBX等功能于一体的综合性设备,满足企业语音.数据.网络安全等业务需求. UCS融合网关设备则是设备厂商在企业融合网关的基础上进一步提出的融合通信设备 ...

  5. NOIP 2017 Day 0. 游记

    刚从曲师大试机回来... 不巧,我抽到了和去年一样的考场,还是那么难用的XP,还是那么难用的键盘. 似乎在考场上有一股奇怪的力量,我本来在自己电脑上打板子打的没那么快,但是试机的那段时间..说出来你们 ...

  6. HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]

    基础题复习 这次用了dfs写法,感觉比较好 #include <iostream> #include <cstdio> #include <cstring> #in ...

  7. testlink用例的导出到Excel

    一直在网上寻找怎么把testlink的用例导出到Excel中,以及把Excel中已经写好的用例导入到Testlink中的方法.根据现网的经验,然后修改了一下.贴出来,以飨有这方面需求的测试同仁. Te ...

  8. python基础dict,集合,文件

    字典是一种key:value的数据类型dict1{ 'stud1':'孙礼昭', 'stud2':'slz', 'stud3':'sunlizhao',}dict是无序的,key是唯一的  天生去重增 ...

  9. Redis 实践3-操作

    string常用操作 set key1  aminglinux get key1   set key1  aming //一个key对应一个value,多次赋值,会覆盖前面的value setnx k ...

  10. centos 6.* 配置端口

    vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT     (允 ...