⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000020.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;SuperSB&nbsp;(孤鹰),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;[转载]unix环境高级编程-附B&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Wed&nbsp;Mar&nbsp;15&nbsp;14:32:22&nbsp;2000)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>发信人:&nbsp;taosm&nbsp;(128+64--&gt;cool),&nbsp;信区:&nbsp;unix&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;unix环境高级编程--附录B&nbsp;其他源代码&nbsp;&nbsp;<BR>发信站:&nbsp;西十八BBS&nbsp;(Sat&nbsp;Mar&nbsp;11&nbsp;14:31:25&nbsp;2000),&nbsp;转信&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>附录&nbsp;B&nbsp;&nbsp;<BR>其它源代码&nbsp;&nbsp;<BR>B.1&nbsp;我们的头文件&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在书正文中的大多数程序都包含头文件ourhdr.h,这示于程序B.1中。其中定义了&nbsp;&nbsp;<BR>常数(例如MAXLINE)和我们自编函数的原型。&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为大多数程序序包含下列头文件:&lt;stdio.h&gt;、&lt;stdlib.h&gt;(其中有exit函数原&nbsp;&nbsp;<BR>型),以及&lt;unistd.h&gt;(其中包含所有标准Unix函数的原型),所以ourhdr.h包含&nbsp;&nbsp;<BR>了这些系统头文件,同时还包含了&lt;string.h&gt;。这样就减少了本书正文中所有程序&nbsp;&nbsp;<BR>的长度。&nbsp;&nbsp;<BR>/*&nbsp;Our&nbsp;own&nbsp;header,&nbsp;to&nbsp;be&nbsp;included&nbsp;*after*&nbsp;all&nbsp;standard&nbsp;system&nbsp;headers&nbsp;*&nbsp;&nbsp;<BR>/&nbsp;&nbsp;<BR>#ifndef&nbsp;__ourhdr_h&nbsp;&nbsp;<BR>#define&nbsp;__ourhdr_h&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sys/types.h&gt;&nbsp;&nbsp;&nbsp;/*&nbsp;required&nbsp;for&nbsp;some&nbsp;of&nbsp;our&nbsp;prototypes&nbsp;*/&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;stdio.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;for&nbsp;convenience&nbsp;*/&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;stdlib.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;for&nbsp;convenience&nbsp;*/&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;for&nbsp;convenience&nbsp;*/&nbsp;&nbsp;<BR>#include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;unistd.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;for&nbsp;convenience&nbsp;*/&nbsp;&nbsp;<BR>#define&nbsp;MAXLINE&nbsp;4096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;max&nbsp;line&nbsp;length&nbsp;*/&nbsp;&nbsp;<BR>#define&nbsp;FILE_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(S_IRUSR&nbsp;|&nbsp;S_IWUSR&nbsp;|&nbsp;S_IRGRP&nbsp;|&nbsp;S_IROTH)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;default&nbsp;file&nbsp;access&nbsp;permissions&nbsp;for&nbsp;n&nbsp;&nbsp;<BR>w&nbsp;files&nbsp;*/&nbsp;&nbsp;<BR>#define&nbsp;DIR_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(FILE_MODE&nbsp;|&nbsp;S_IXUSR&nbsp;|&nbsp;S_IXGRP&nbsp;|&nbsp;S_IXOTH)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;default&nbsp;permissions&nbsp;for&nbsp;new&nbsp;directori&nbsp;&nbsp;<BR>s&nbsp;*/&nbsp;&nbsp;<BR>typedef&nbsp;void&nbsp;&nbsp;&nbsp;&nbsp;Sigfunc(int);&nbsp;&nbsp;&nbsp;/*&nbsp;for&nbsp;signal&nbsp;handlers&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;4.3BSD&nbsp;Reno&nbsp;&lt;signal.h&gt;&nbsp;doesn't&nbsp;define&nbsp;&nbsp;<BR>SIG_ERR&nbsp;*/&nbsp;&nbsp;<BR>#if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defined(SIG_IGN)&nbsp;&amp;&amp;&nbsp;!defined(SIG_ERR)&nbsp;&nbsp;<BR>#define&nbsp;SIG_ERR&nbsp;((Sigfunc&nbsp;*)-1)&nbsp;&nbsp;<BR>#endif&nbsp;&nbsp;<BR>#define&nbsp;min(a,b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((a)&nbsp;&lt;&nbsp;(b)&nbsp;?&nbsp;(a)&nbsp;:&nbsp;(b))&nbsp;&nbsp;<BR>#define&nbsp;max(a,b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((a)&nbsp;&gt;&nbsp;(b)&nbsp;?&nbsp;(a)&nbsp;:&nbsp;(b))&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;prototypes&nbsp;for&nbsp;our&nbsp;own&nbsp;functions&nbsp;*/&nbsp;&nbsp;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;*path_alloc(int&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;pathalloc}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open_max(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;openmax}&nbsp;*/&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr_fl(int,&nbsp;int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;setfl}&nbsp;*/&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set_fl(int,&nbsp;int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;setfl}&nbsp;*/&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pr_exit(int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;prexit}&nbsp;*/&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pr_mask(const&nbsp;char&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;prmask}&nbsp;*/&nbsp;&nbsp;<BR>Sigfunc&nbsp;*signal_intr(int,&nbsp;Sigfunc&nbsp;*);/*&nbsp;{Prog&nbsp;signal_intr_function}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tty_cbreak(int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;raw}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tty_raw(int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;raw}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tty_reset(int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;raw}&nbsp;*/&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tty_atexit(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;raw}&nbsp;*/&nbsp;&nbsp;<BR>#ifdef&nbsp;&nbsp;ECHO&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;only&nbsp;if&nbsp;&lt;termios.h&gt;&nbsp;has&nbsp;been&nbsp;included&nbsp;*/&nbsp;&nbsp;<BR>struct&nbsp;termios&nbsp;&nbsp;*tty_termios(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;raw}&nbsp;*/&nbsp;&nbsp;<BR>#endif&nbsp;&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep_us(unsigned&nbsp;int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Ex&nbsp;sleepus}&nbsp;*/&nbsp;&nbsp;<BR>ssize_t&nbsp;&nbsp;readn(int,&nbsp;void&nbsp;*,&nbsp;size_t);/*&nbsp;{Prog&nbsp;readn}&nbsp;*/&nbsp;&nbsp;<BR>ssize_t&nbsp;&nbsp;writen(int,&nbsp;const&nbsp;void&nbsp;*,&nbsp;size_t);/*&nbsp;{Prog&nbsp;writen}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;daemon_init(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;daemoninit}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_pipe(int&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;svr4_spipe&nbsp;bsd&nbsp;&nbsp;<BR>spipe}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv_fd(int,&nbsp;ssize_t&nbsp;(*func)(int,&nbsp;const&nbsp;void&nbsp;*,&nbsp;size_t));&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;&nbsp;<BR>&nbsp;recvfd_svr4&nbsp;recvfd_43bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send_fd(int,&nbsp;int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;sendfd_svr4&nbsp;se&nbsp;&nbsp;<BR>dfd_43bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send_err(int,&nbsp;int,&nbsp;const&nbsp;char&nbsp;*);/*&nbsp;{Prog&nbsp;senderr}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serv_listen(const&nbsp;char&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;servlisten_svr4&nbsp;servli&nbsp;&nbsp;<BR>ten_4&nbsp;&nbsp;<BR>4bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serv_accept(int,&nbsp;uid_t&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;servaccept_svr4&nbsp;servac&nbsp;&nbsp;<BR>ept_4&nbsp;&nbsp;<BR>4bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cli_conn(const&nbsp;char&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;cliconn_svr4&nbsp;cliconn_4&nbsp;&nbsp;<BR>bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf_args(char&nbsp;*,&nbsp;int&nbsp;(*func)(int,&nbsp;char&nbsp;**));&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;&nbsp;<BR>bufargs}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptym_open(char&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;ptyopen_svr4&nbsp;p&nbsp;&nbsp;<BR>yopen_44bsd}&nbsp;*/&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptys_open(int,&nbsp;char&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Progs&nbsp;ptyopen_svr4&nbsp;ptyopen_4&nbsp;&nbsp;<BR>bsd}&nbsp;*/&nbsp;&nbsp;<BR>#ifdef&nbsp;&nbsp;TIOCGWINSZ&nbsp;&nbsp;<BR>pid_t&nbsp;&nbsp;&nbsp;&nbsp;pty_fork(int&nbsp;*,&nbsp;char&nbsp;*,&nbsp;const&nbsp;struct&nbsp;termios&nbsp;*,&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;struct&nbsp;winsize&nbsp;*);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;ptyfork&nbsp;&nbsp;<BR>&nbsp;*/&nbsp;&nbsp;<BR>#endif&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(int,&nbsp;int,&nbsp;int,&nbsp;off_t,&nbsp;int,&nbsp;off_t);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;{Prog&nbsp;&nbsp;<BR>lockreg}&nbsp;*/&nbsp;&nbsp;<BR>#define&nbsp;read_lock(fd,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;\&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(fd,&nbsp;F_SETLK,&nbsp;F_RDLCK,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;&nbsp;<BR>#define&nbsp;readw_lock(fd,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;\&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(fd,&nbsp;F_SETLKW,&nbsp;F_RDLCK,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;&nbsp;<BR>#define&nbsp;write_lock(fd,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;\&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(fd,&nbsp;F_SETLK,&nbsp;F_WRLCK,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;&nbsp;<BR>#define&nbsp;writew_lock(fd,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;\&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(fd,&nbsp;F_SETLKW,&nbsp;F_WRLCK,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;&nbsp;<BR>#define&nbsp;un_lock(fd,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;\&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_reg(fd,&nbsp;F_SETLK,&nbsp;F_UNLCK,&nbsp;offset,&nbsp;whence,&nbsp;len)&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -