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

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;ylsdd&nbsp;(1245),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Faint&nbsp;0.1&nbsp;文件&nbsp;loadbbs.c&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Wed&nbsp;Feb&nbsp;23&nbsp;07:10:30&nbsp;2000)&nbsp;<BR>&nbsp;<BR>#include&nbsp;&lt;sys/stat.h&gt;&nbsp;<BR>#include&nbsp;&lt;unistd.h&gt;&nbsp;<BR>#include&nbsp;&lt;stdio.h&gt;&nbsp;<BR>#include&nbsp;&lt;signal.h&gt;&nbsp;<BR>#include&nbsp;&lt;fcntl.h&gt;&nbsp;<BR>#include&nbsp;&lt;termios.h&gt;&nbsp;<BR>#include&nbsp;&lt;sys/types.h&gt;&nbsp;<BR>#define&nbsp;CTRL_l&nbsp;12&nbsp;<BR>struct&nbsp;termios&nbsp;tsave;&nbsp;<BR>void&nbsp;scan_mode()&nbsp;<BR>{&nbsp;&nbsp;struct&nbsp;termios&nbsp;tbuf;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(!isatty(0))&nbsp;exit(1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(tcgetattr(0,&amp;tbuf)==-1)&nbsp;exit(1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;tsave=tbuf;&nbsp;<BR>&nbsp;&nbsp;&nbsp;tbuf.c_lflag&amp;=~(ECHO|ICANON|ISIG);&nbsp;<BR>&nbsp;&nbsp;&nbsp;tbuf.c_cc[VMIN]=tbuf.c_cc[VTIME]&nbsp;=0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(tcsetattr(0,TCSANOW,&amp;tbuf)==-1)&nbsp;exit(1);&nbsp;<BR>}&nbsp;<BR>void&nbsp;restore_mode(int&nbsp;i)&nbsp;<BR>{&nbsp;&nbsp;tcsetattr(0,TCSANOW,&amp;tsave);&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(i&gt;=0)&nbsp;exit(1);&nbsp;<BR>}&nbsp;<BR>main(int&nbsp;argn,&nbsp;char&nbsp;**argv)&nbsp;<BR>{&nbsp;&nbsp;int&nbsp;i,&nbsp;mode=0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;char&nbsp;buf[1024],&nbsp;inputch;&nbsp;<BR>&nbsp;&nbsp;&nbsp;char&nbsp;fnw[40],&nbsp;fnr[40],&nbsp;fnlock[40];&nbsp;<BR>&nbsp;&nbsp;&nbsp;int&nbsp;fdw,&nbsp;fdr,&nbsp;fdlock;&nbsp;<BR>&nbsp;&nbsp;&nbsp;fd_set&nbsp;rdfds;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(argn&lt;2)&nbsp;return&nbsp;-1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(sscanf(argv[1],&quot;%d&quot;,&amp;i)!=1)&nbsp;return&nbsp;-1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;sprintf(fnlock,&nbsp;&quot;ctrl/%02dloadbbs.lock&quot;,i);&nbsp;<BR>&nbsp;&nbsp;&nbsp;sprintf(fnw,&nbsp;&quot;ctrl/%02din.fifo&quot;,i);&nbsp;<BR>&nbsp;&nbsp;&nbsp;sprintf(fnr,&nbsp;&quot;ctrl/%02dout.fifo&quot;,i);&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(argn&gt;2)&nbsp;switch(fork())&nbsp;<BR>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;case&nbsp;-1:&nbsp;return&nbsp;-1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;0:&nbsp;execvp(&quot;./cover&quot;,&nbsp;&amp;argv[0]);&nbsp;printf(&quot;error&quot;);&nbsp;return&nbsp;-1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;break;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;fdlock=open(fnlock,O_CREAT|O_RDONLY,S_IRUSR|S_IWUSR);&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(fdlock&lt;0)&nbsp;exit(1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(flock(fdlock,LOCK_EX|LOCK_NB)&lt;0)&nbsp;exit(1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;fdr=open(fnr,O_RDONLY|O_NDELAY);&nbsp;<BR>&nbsp;&nbsp;&nbsp;fdw=open(fnw,O_WRONLY);&nbsp;<BR>&nbsp;&nbsp;&nbsp;scan_mode();&nbsp;<BR>&nbsp;&nbsp;&nbsp;signal(SIGPIPE,&nbsp;restore_mode);&nbsp;<BR>&nbsp;&nbsp;&nbsp;inputch=CTRL_l;&nbsp;<BR>&nbsp;&nbsp;&nbsp;write(fdw,&amp;inputch,1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;while(1)&nbsp;<BR>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;FD_ZERO(&amp;rdfds);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FD_SET(0,&amp;rdfds);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FD_SET(fdr,&amp;rdfds);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(select(fdr+1,&amp;rdfds,NULL,NULL,NULL))&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(FD_ISSET(fdr,&amp;rdfds))&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;i=read(fdr,buf,1024);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&gt;0)&nbsp;write(1,buf,i);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(FD_ISSET(0,&amp;rdfds))&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;i=read(0,&amp;inputch,1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==1&amp;&amp;mode==0&amp;&amp;inputch==29)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;\n\033[1;4m&lt;loadbbs:&nbsp;press&nbsp;'c'&nbsp;to&nbsp;abort,&nbsp;&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;press&nbsp;any&nbsp;key&nbsp;else&nbsp;to&nbsp;continue&gt;:\033[0m&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fflush(stdout);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode=1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(i==1&amp;&amp;mode==0)&nbsp;write(fdw,&amp;inputch,1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(i==1&amp;&amp;mode==1)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;switch(inputch)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;case&nbsp;'c':&nbsp;printf(&quot;\033[2J\033[1;1H&quot;);&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;restore_mode(0);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&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;mode=0;&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;inputch=CTRL_l;&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;write(fdw,&amp;inputch,1);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>要是不能说糊话,&nbsp;还不如死了算了&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;162.105.21.92]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

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