当前位置:  技术问答>linux和unix

unix 环境高级编程书里面的第一个例子

    来源: 互联网  发布时间:2016-11-19

    本文导语:  //帮我看看哪里面错了 #include "apue.h" #include  int main(int argc,char *argv[]) {         DIR *dp;         struct dirent *dirp;         if(argc!=2)                 err_quit("usage: ls directory_name");         if((...

//帮我看看哪里面错了
#include "apue.h"
#include 

int main(int argc,char *argv[])
{
        DIR *dp;
        struct dirent *dirp;

        if(argc!=2)
                err_quit("usage: ls directory_name");

        if((dp=opendir(argv[1])==NULL))
                err_sys("can,t open %s",argv[1]);

        while( (dirp=readdir(dp))!=NULL)
                printf("%sn",dirp->d_name);

        closedir(dp);
        exit(0);
}


apue.h 头文件

/* Our own header, to be included before all standard system headers */

#ifndef    _APUE_H
#define    _APUE_H

#if defined(SOLARIS)
#define _XOPEN_SOURCE    500    /* Single UNIX Specification, Version 2  for Solaris 9 */
#define CMSG_LEN(x)    _CMSG_DATA_ALIGN(sizeof(struct cmsghdr)+(x))
#elif !defined(BSD)
#define _XOPEN_SOURCE    600    /* Single UNIX Specification, Version 3 */
#endif

#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 */

/*
 * 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))

/*
 * Prototypes for our own functions.
 */
char    *path_alloc(int *);                /* {Prog pathalloc} */
long     open_max(void);                /* {Prog openmax} */
void     clr_fl(int, int);                /* {Prog setfl} */
void     set_fl(int, int);                /* {Prog setfl} */
void     pr_exit(int);                    /* {Prog prexit} */
void     pr_mask(const char *);            /* {Prog prmask} */
Sigfunc    *signal_intr(int, Sigfunc *);    /* {Prog signal_intr_function} */

int         tty_cbreak(int);                /* {Prog raw} */
int         tty_raw(int);                    /* {Prog raw} */
int         tty_reset(int);                /* {Prog raw} */
void     tty_atexit(void);                /* {Prog raw} */
#ifdef    ECHO    /* only if  has been included */
struct termios    *tty_termios(void);        /* {Prog raw} */
#endif

void     sleep_us(unsigned int);            /* {Ex sleepus} */
ssize_t     readn(int, void *, size_t);        /* {Prog readn_writen} */
ssize_t     writen(int, const void *, size_t);    /* {Prog readn_writen} */
void     daemonize(const char *);            /* {Prog daemoninit} */

int         s_pipe(int *);                    /* {Progs streams_spipe sock_spipe} */
int         recv_fd(int, ssize_t (*func)(int,
                 const void *, size_t));/* {Progs recvfd_streams recvfd_sockets} */
int         send_fd(int, int);                /* {Progs sendfd_streams sendfd_sockets} */
int         send_err(int, int,
                  const char *);        /* {Prog senderr} */
int         serv_listen(const char *);        /* {Progs servlisten_streams servlisten_sockets} */
int         serv_accept(int, uid_t *);        /* {Progs servaccept_streams servaccept_sockets} */
int         cli_conn(const char *);        /* {Progs cliconn_streams cliconn_sockets} */
int         buf_args(char *, int (*func)(int,
                  char **));            /* {Prog bufargs} */

int         ptym_open(char *, int);    /* {Progs3 ptyopen_streams ptyopen_bsd ptyopen_linux} */
int         ptys_open(char *);            /* {Progs3 ptyopen_streams ptyopen_bsd ptyopen_linux} */
#ifdef    TIOCGWINSZ
pid_t     pty_fork(int *, char *, int, const struct termios *,
                  const struct winsize *);        /* {Prog ptyfork} */
#endif

int        lock_reg(int, int, int, off_t, int, off_t); /* {Prog lockreg} */
#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);        /* {Prog locktest} */

#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 *, ...);        /* {App misc_source} */
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 *, ...);            /* {App misc_source} */
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 {Sec race_conditions} */
void    TELL_PARENT(pid_t);
void    TELL_CHILD(pid_t);
void    WAIT_PARENT(void);
void    WAIT_CHILD(void);

#endif    /* _APUE_H */



|
搞个错误提示上来嘛!

|
err_XXX函数在头文件里有定义,却没有具体实现。楼主可以改用printf打印错误,或者参考APUE最后的附录把err_XXX函数实现的C文件也加上。
另外,可以不使用apue.h头文件,opendir和readdir需要加如下头文件:
#include 
#include 
楼主man命令确认一下。

|
象遇到这样的问题,你自己需要编译下,看看具体是什么错误。。
最基本的开发过程中,也是需要一个调试的过程。

|
err_quit("usage: ls directory_name");
err_sys("can,t open %s",argv[1]);
没有必要用这两句,用自己的错误输出.
另外,例子的头文件太多,不好。
应该自己一个一个写上去,这样才有效果.

    
 
 

您可能感兴趣的文章:

  • 关于unix环境高级编程里面的例子
  • 谁能给一个linux/unix下多线程同步的例子
  • UNIX环境高级编程的例子可以在LINUX下调试吗?
  • 请问从哪里可以下到UNIX网络编程代码例子里用的包裹函数啊
  • UNIX 中Source命令是做什么用的,怎么用的(讲解一下命令得意义和用法,最好举个简单易懂得例子)
  • 谁有《unix系统编程--基于SVR4》这本书的例子代码,我现在按照数上说的去下,已经没有那个目录了,呵呵
  • 关于unix高级编程的一个例子
  • 哪位高手给个unix系统下C语言socket+fork()+select()的例子?
  • 《unix 网络编程》ioctl那章一个例子的问题
  • <UNIX环境高级编程>书中的例子,我实验不明白,请知道的告诉下,谢谢.
  • Unix环境高级编程10.3的一个例子不太懂
  • Unix编程,例子源码为何编译错误
  • UNIX环境高级编程里一个SOCKET编程的例子问题
  • UNIX环境高级编程第四章的一个程序例子里面的指针存储字符串问题
  • unix网络编程的第一个例子都不会!
  • 《UNIX网络编程》第一个例子出现“connect error: Connection refused”错误提示信息?
  • 运行unix环境高级编程例子问题
  • 大家看看unix环境高级编程的一个信号的例子
  • 谁能给一个unix下用c写的服务器端socket例子,谢谢了,急啊
  • SCO UNix 的 c/c++ 编译器哪儿有? 带socket的例子哪儿有?
  • 高级UNIX编程和UNIX环境高级编程是不是一本书
  • 读过 Unix网络编程 或者 熟知Unix网络编程的 的进来看一下
  • 想看linux内核源代码,另外手头上有一本《unix环境高级编程》,需要先把《unix环境高级编程》看完之后再看内核吗?
  • 我下载了UNIX环境高级编程的源码,可是打开时有错误,怎么才可以打开?还有谁有《UNIX环境高级编程(英文版)》的chm格式的ebook?
  • 刚刚接触Unix系统和Unix编程。急需Unix下多线程程序设计和网络Socket程序设计方面的资料。
  • 想学linux下程序开发,不知道买哪本书好《UNIX环境高级编程》(中文第一版)还是《UNIX环境高级编程》(英文第二版)
  • unix编程与linux编程有什么区别?
  • [学习UNIX编程]初学UNIX编程,遇到一个小小的问题,烦劳大虾帮忙解惑,谢谢!
  • 看Unix环境高级编程,提到了V和bsd,有很多不同,但是没有提到Linux,请问linux跟BSD或者unix V 编程细节哪些不同的,特别是线程,进程,和socke
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?《Linux下的c编程》《嵌入式系统C编程》那个更适合初学者?各是那个出版社的?(
  • 我初学 Unix 编程,在看《Unix环境高级编程》时有一个问题请指教。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 因进修,需要学习《Unix 环境高级编程》一书,完全没接触过Unix/Linux,请推荐一个学习环境。
  • 急,《UNIX环境高级编程》中6.9 环境变量T Z是什么?
  • Java在unix环境下的应用?急、急、急...
  • 关于UNIX下的环境变量的设定
  • unix环境高级编程 VS linux程序设计,买哪本?
  • unix环境高级编程
  • 各位大侠,请推荐几本在UNIX环境下使用标准C语言编程的好书.谢谢啊!!!
  • 有没有什么工具可以在windows环境下生成unix用的.so文件
  • 在SCO UNIX 5。0。5下,如何安装C编译环境?
  • 大家好!如何在UNIX环境下建立WEB服务器?用什么软件?
  • <unix环境高级编程>该怎么看?
  • 试过《Unix环境高级编程》里的程序的请进
  • UNIX rc3.d 启动的服务,环境变量不正确
  • SunUnix 和 sco unix 的编程环境一样吗?
  • 我有个问题. UNIX环境生成报表,由命令行打印,
  • Unix环境的编程中,“高级功能”用到的多不?
  • 关于Bochs-2.0.2(UNIX模拟环境),价格100分
  • 在UNIX/C环境下怎么定时启动一个函数?
  • 哪有 UNIX环境高级编程 第2版 源代码 ????(急急~~~~)
  • 网页版Unix操作系统环境
  • java命名空间java.util.regex类pattern的类成员方法: unix_lines定义及介绍
  • 关于UNIX的历史 : 1973年,K.Thompson和D.M.ritchie,用C改写UNIX。那么,在此之前,UNIX是用什么写的?
  • unix/Linux下c++ boost thread库读写锁介绍
  • 没有unix系统我如何学习unix
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • unix盘哪里有下载的??哪里有比较好的unix论坛??万分感谢!!!!!!!!!
  • php将unix时间戳转换成字符串时间函数(date)
  • 急!装完unix5.06,再装win2000。重启后不能进unix.
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • UNIX特急!!!digital unix问题,请专家快来!!!
  • UNIX支持中文否,请推荐UNIX好书


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3