📄 220.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="214.htm">上一层</a>][<a href="221.htm">下一篇</a>]
<hr><p align="left"><small>发信人: ylsdd (不该存在者), 信区: Linux <br>
标 题: Faint 0.0 文件 cover.c <br>
发信站: BBS 水木清华站 (Tue Dec 21 20:54:44 1999) <br>
<br>
<br>
******************************************* <br>
Faint 传播准则: <br>
1. 在转载中不漏掉本段准则任何一条 <br>
2. 允许修改, 但要将修改人作为本准则最后 <br>
一条加入本准则 <br>
3. ecnegrevid ytht.dhs.org 1999.12.21 <br>
******************************************* <br>
<br>
#include <unistd.h> <br>
#include <sys/param.h> <br>
#include <signal.h> <br>
#include <fcntl.h> <br>
#include <errno.h> <br>
#include <termios.h> <br>
#include <sys/time.h> <br>
#include <sys/types.h> <br>
#include "setup_daemon.c" <br>
#define TIMEIDLE 200 <br>
<br>
main(int argc, char **argv) <br>
{ int fdin[2], fdout[2]; <br>
int fdr0, fdw0, fdr1, fdw1, fdlock, i, try; <br>
fd_set rdfds, exfds; <br>
struct timeval timeout; <br>
char buf[1024], ch=12; <br>
<br>
setup_daemon(); <br>
if(pipe(fdin)==-1) exit(1); <br>
if(pipe(fdout)==-1) exit(1); <br>
fdlock=open(".lockcover",O_RDONLY|O_CREAT); <br>
if(fdlock<0) exit(1); <br>
if(flock(fdlock,LOCK_EX|LOCK_NB)<0) exit(1); <br>
<br>
switch(fork()) <br>
{ case -1: exit(1); <br>
case 0: close(fdin[1]); <br>
dup(fdout[1]); <br>
close(fdout[0]); <br>
close(fdout[1]); <br>
close(fdlock); <br>
execv(argv[1], &argv[1]); <br>
exit(1); <br>
default: <br>
close(fdin[0]); <br>
fdw0=fdin[1]; <br>
close(fdout[1]); <br>
fdr1=fdout[0]; <br>
} <br>
<br>
(void)signal(SIGPIPE, SIG_IGN); <br>
fdw1=-1; <br>
fdr0=open("in.FIFO",O_RDWR|O_NDELAY); <br>
if(fdr0<0) exit(1); <br>
timeout.tv_sec=TIMEIDLE; <br>
timeout.tv_usec=0; <br>
try=1; <br>
while(1) <br>
{ <br>
if(fdw1<0&&try==1) <br>
{ fdw1=open("out.FIFO",O_WRONLY|O_NDELAY); <br>
try=0; <br>
} <br>
} <br>
FD_ZERO(&rdfds); <br>
FD_ZERO(&exfds); <br>
FD_SET(fdr1,&rdfds); <br>
FD_SET(fdr1,&exfds); <br>
FD_SET(fdr0,&rdfds); <br>
if(select(1+((fdr0>fdr1)?fdr0:fdr1),&rdfds,NULL,&exfds,&timeout)<=0) <br>
{ timeout.tv_sec=TIMEIDLE; <br>
timeout.tv_usec=0; <br>
write(fdw0,&ch,1); <br>
continue; <br>
} <br>
if(FD_ISSET(fdr1,&rdfds)) <br>
{ i=read(fdr1,buf,1024); <br>
if(fdw1>=0&&i>0) <br>
{ while(write(fdw1,buf,i)<0) <br>
{ if(errno==EINTR) continue; <br>
close(fdw1); <br>
fdw1=-1; <br>
break; <br>
} <br>
} <br>
} <br>
if(FD_ISSET(fdr1,&exfds)) exit(1); <br>
if(FD_ISSET(fdr0,&rdfds)) <br>
{ i=read(fdr0,buf,1024); <br>
if(i>0) <br>
{ while(write(fdw0,buf,i)<0) <br>
{ if(errno!=EINTR) exit(1); <br>
} <br>
timeout.tv_sec=TIMEIDLE; <br>
timeout.tv_usec=0; <br>
try=1; <br>
} <br>
} <br>
} <br>
} -- <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="214.htm">上一层</a>][<a href="221.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -