首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于apue.h头文件使用有关问题

2012-12-30 
关于apue.h头文件使用问题在VM虚拟机上安装了Linux,但是在Linux下却无法编译《Unix环境高级编程》中的例子,

关于apue.h头文件使用问题
    在VM虚拟机上安装了Linux,但是在Linux下却无法编译《Unix环境高级编程》中的例子,错误提示是没有apue.h头文件。

上网把问题搜索了下,发现提供的解决方法,貌似Linux都不是安装在VM虚拟机的!

希望有此问题经验的高人能解答下!

谢谢了!
[解决办法]
apue.h不是标准库头文件,
它应该是作者自己写的,是为了方便代码共享,减少重复代码数。
这个头文件网上搜索应该是可以下的到的。
[解决办法]
看看apue.h的内容,自己手工加一个.
[解决办法]
apue英文版第3版的附录B就是apue.h

对于中文版,应该也能在附录中找到
[解决办法]
自己去网上搜一下把附录的代码下载下来!
具体参照http://www.cnblogs.com/cnhome/archive/2010/03/30/1701024.html
[解决办法]
把目录的代码自己朝下来写一个
[解决办法]
开启ssh服务,用sftp传上去就行了
[解决办法]
在Linux系统中 vi apue.h 
然后把附录中的内容贴上去..
[解决办法]

引用:
看来大家是没有理解所问的问题。我是想问怎么把apue.h头文件加入Linux的目录下,因为我用的是XP系统,

Linux系统是安装在VM上面的。。。如此说来,是不是又涉及文件共享的问题了???

vm直接就可以把windows的文件共享到linux里!!!
自己点点vm的菜单你就会发现  
http://wenku.baidu.com/view/02a427b765ce0508763213d8.html

要说道方法 简直太多了
ftp
sftp
scp
samba
安装vm tools 然后直接把文件拖拽到虚拟机窗口里
U盘
......
[解决办法]
jf

这个问题说明没有认真看书
[解决办法]
英文版第二版:1194页:

/* Our own header, to be included before all standard system headers */
#ifndef _APUE_H
#define _APUE_H
#define _XOPEN_SOURCE   600  /* Single UNIX Specification, Version 3 */
#include <sys/types.h>       /* some systems still require this */
#include <sys/stat.h>
#include <sys/termios.h>     /* for winsize */
#ifndef TIOCGWINSZ
#include <sys/ioctl.h>
#endif
#include <stdio.h>     /* for convenience */
#include <stdlib.h>    /* for convenience */
#include <stddef.h>    /* for offsetof */
#include <string.h>    /* for convenience */
#include <unistd.h>    /* for convenience */
#include <signal.h>    /* for SIG_ERR */
#define MAXLINE 4096               /* max line length */
/*
 * Default file access permissions for new files.
 */
#define FILE_MODE   (S_IRUSR 
[解决办法]
 S_IWUSR 
[解决办法]
 S_IRGRP 
[解决办法]
 S_IROTH)


/*
 * Default permissions for new directories.
*/
#define DIR_MODE    (FILE_MODE 
[解决办法]
 S_IXUSR 
[解决办法]
 S_IXGRP 
[解决办法]
 S_IXOTH)
typedef void   Sigfunc(int);   /* for signal handlers */
#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))
/*
 * Prototypes for our own functions.
 */
char    *path_alloc(int *);              /* Figure 2.15 */
long     open_max(void);                 /* Figure 2.16 */
void     clr_fl(int, int);               /* Figure 3.11 */
void     set_fl(int, int);               /* Figure 3.11 */
void     pr_exit(int);                   /* Figure 8.5 */
void     pr_mask(const char *);          /* Figure 10.14 */
Sigfunc *signal_intr(int, Sigfunc *);    /* Figure 10.19 */
int      tty_cbreak(int);                /* Figure 18.20 */
int      tty_raw(int);                   /* Figure 18.20 */
int      tty_reset(int);                 /* Figure 18.20 */
void     tty_atexit(void);               /* Figure 18.20 */
#ifdef  ECHO    /* only if <termios.h>  has been included */
struct termios  *tty_termios(void);      /* Figure 18.20 */
#endif
void     sleep_us(unsigned int);             /* Exercise 14.6 */
ssize_t  readn(int, void *, size_t);         /* Figure 14.29 */
ssize_t  writen(int, const void *, size_t);  /* Figure 14.29 */
void     daemonize(const char *);            /* Figure 13.1 */
int      s_pipe(int *);                 /* Figures 17.6 and 17.13 */


int      recv_fd(int, ssize_t (*func)(int,
                 const void *, size_t));/* Figures 17.21 and 17.23 */
int      send_fd(int, int);             /* Figures 17.20 and 17.22 */
int      send_err(int, int,
                  const char *);        /* Figure 17.19 */
int      serv_listen(const char *);     /* Figures 17.10 and 17.15 */
int      serv_accept(int, uid_t *);     /* Figures 17.11 and 17.16 */
int      cli_conn(const char *);        /* Figures 17.12 and 17.17 */
int      buf_args(char *, int (*func)(int,
                  char **));            /* Figure 17.32 */
int      ptym_open(char *, int);    /* Figures 19.8, 19.9, and 19.10 */
int      ptys_open(char *);         /* Figures 19.8, 19.9, and 19.10 */
#ifdef  TIOCGWINSZ
pid_t    pty_fork(int *, char *, int, const struct termios *,
                  const struct winsize *);      /* Figure 19.11 */
#endif
int     lock_reg(int, int, int, off_t, int, off_t); /* Figure 14.5 */
#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);     /* Figure 14.6 */
#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 *, ...);        /* Appendix B */
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 *, ...);         /* Appendix B */
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);        /* parent/child from Section 8.9 */
void    TELL_PARENT(pid_t);
void    TELL_CHILD(pid_t);
void    WAIT_PARENT(void);
void    WAIT_CHILD(void);
#endif  /* _APUE_H */


[解决办法]
在附录B中找找err_quit err_sys的实现代码
[解决办法]
你不能只复制头文件进去! 那些头文件里只是定义了很多函数而已 根本没有实现。实现的代码在别的文件里,你把附录的源码都复制到你的linux里去。
在发一次这个连接http://www.cnblogs.com/cnhome/archive/2010/03/30/1701024.html

热点排行