UNIX環境高階程式設計的apue h原始碼 APUE

2021-05-24 02:19:00 字數 4695 閱讀 1603

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

#define    max(a,b)    ((a) > (b) ? (a) : (b))

/* * prototypes for our own functions.

*/ char    *path_alloc(int *);                /* */

long     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    /* only if

has been included */

struct termios    *tty_termios(void);        /* */

#endif

void     sleep_us(unsigned int);            /* */

ssize_t     readn(int, void *, size_t);        /* */

ssize_t     writen(int, const void *, size_t);    /* */

void     daemonize(const char *);            /* */

int         s_pipe(int *);                    /* */

int         recv_fd(int, ssize_t (*func)(int,

const void *, size_t));/* */

int         send_fd(int, 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);    /* */

int         ptys_open(char *);            /* */

#ifdef    tiocgwinsz

pid_t     pty_fork(int *, char *, int, 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_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    tell_wait(void);        /* parent/child from */

void    tell_parent(pid_t);

void    tell_child(pid_t);

void    wait_parent(void);

void    wait_child(void);

#endif    /* _apue_h */

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...

unix環境高階程式設計

檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符 標準輸入,標準...

UNIX環境高階程式設計

本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...