- 论坛徽章:
- 0
|
我是个新手,在学习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 |
|