免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1126 | 回复: 3
打印 上一主题 下一主题

unix高级环境编程问题请教? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-01 11:39 |只看该作者 |倒序浏览
我是个新手,在学习unix高级环境编程的时候,在第三章遇到一个例题:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "ourhdr.h"

char buf1[]="abcdefghij";
char buf2[]="ABCDEFGHIJ";

int main(void)
{
   int fd;
   if((fd=creat("file.hole",FILE_MODE)) <0)
   err_sys("creat error";
  if(write(fd,buf1,10)!=10)
  err_sys("buf1 write error";
  if(lseek(fd,40,SEEK_SET)==-1)
  err_sys("lseek error";
  if(write(fd,buf2,10)!=10)
  err_sys("buf1 write error";
  exit(0);

}

我在用gcc编译的时候通不过,那位朋友帮着看一下,谢谢!
我用gcc -o a.out test.c

ourhdr.h 如下:
#ifndef _ourhdr_h
#define _ourhdr_h

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define MAXLINE 4096

#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 *);
int 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
struct termios *tty_termios(void);
#endif

void sleep_us(unsigned int);
ssize_t rdadn(int,void *,size_t);
ssize_t writen(int, const void *,size_t);
int daemon_init(void);

int s_pipe(int *);
int recv_fd(int, ssize_t (*func) (int,const void *,size_t));

int send_fd(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 ptys_open(int, char *);
#ifdef TIOCGWINSZ

pid_t pty_fork(int *,char *, 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_readlock(fd,offset,whence,len)\
    lock_test(fd,F_EDLCK,offset,whence len)
#define is_writelock(fd,offset,whence,len)\
    lock_test(fd,F_WRLCK,offset,whence,len)

void err_dump(const char *, ...);
void err_msg(const char *, ...);
void err_quit(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

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-06-01 13:35 |只看该作者
你的 ourhdr.h头 文件里只有函数 声明,没有实现部分,所以编译不通.

你可以 把 ourhdr.h这个头文件 抛弃.

err_sys 这样的函数 无非是封装了 perror 等这样的 错误处理函数.自己写一个.

论坛徽章:
0
3 [报告]
发表于 2006-06-01 15:49 |只看该作者
发现好多人问跟ourhdr.h相关的问题,里面的自定义函数书上都有实现,就没有人想到过自己把那些函数敲进去么?
不要说傻,我以前就是这样做的,书上的例子我也是自己敲进去编译验证的。

论坛徽章:
0
4 [报告]
发表于 2006-06-02 20:49 |只看该作者
www.apuebook.com下载源代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP