📄 在c语言下使用io端.htm
字号:
style='mso-bidi-font-size:10.5pt'> outw_p() </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>等巨集指令</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>,
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>在你对埠位作址存取动作之后只需很短的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>(</span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>大约一微秒</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>)</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>延迟时间就可以完成</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'>; </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>你也可以让延迟时间变成大约四微秒方法是在使用</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> #include </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>之前使用</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
#define REALLY_SLOW_IO. </span><span style='mso-bidi-font-size:10.5pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>这些巨集指令通常</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> (</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>除非你使用的是</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> #define SLOW_IO_BY_JUMPING, </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>这个方法可能较不准确</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'>) </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>会利用输出资料到埠位址</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> 0x80 </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>以便达到延迟时间的目的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>所以你得先以函式</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> ioperm() </span><span style='mso-bidi-font-size:10.5pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>取得埠位址</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> 0x80 </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>的使用权限</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> (</span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>输出资料到埠位址</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> 0x80 </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>不应该会对系统的其他其他部分造成影响</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>). </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>至于其他通用的延迟时间的方法</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>, </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>请继续读下去</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>. <br>
<br>
ioperm(2), iopl(2) </span><span style='mso-bidi-font-size:10.5pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>等函式</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>和上面所述及的巨集指令的使用说明会收录在最近出版的</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> Linux </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>使用说明文件集中</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>. <br>
<br>
2. </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>另一个替代的方法</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>: /dev/port <br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>另一个存取</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> I/O </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>埠的方法是以函式</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> open() </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>开启档案</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
/dev/port (</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>一个字元装置</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>,</span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>主要装置编号为</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> 1, </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>次要装置编号为</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> 4) </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>以便执行读且</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>/</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>或写的动作</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> (</span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>注意标准输出入</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> (stdio) </span><span style='mso-bidi-font-size:10.5pt;font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>函式</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> f*() </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>有内部的缓冲</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> (buffering), </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>所以要避免使用</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>). </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>接着使用</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> lseek() </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>函式以便在该字元装置档案中找到某个</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> byte </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>资料的正确位置</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> (</span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>档案位置</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
0 = </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>埠位址</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> 0x00, </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>档案位置</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> 1 = </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>埠位址</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
0x01, </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>以此类推</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>), </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>然后你可以使用</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> read() </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>或</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> write() </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>函式对某个埠位址做读或写一个</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> byte </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>或</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
word </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>资料的动作</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>. <br>
<br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>这个替代的方法就是在你的程式里使用</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> read/write </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>函式来存取</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> /dev/port </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>字元装置档案</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>. </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>这个方法的执行速度或许比前面所讲的一般方法还慢</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>但是不需要编译器的最佳化功能也不需要使用函式</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'> ioperm() . </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>如果你允许非</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> root </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>使用者或群组存取</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> /dev/port </span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>字元设装置案</span><span lang=EN-US
style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>操作时就不需拥有</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> root </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>权限</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'> -- </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>但是对于系统安全而言是个非常糟糕的事情</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'>, </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>因为他可能伤害到你的系统</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>或许会有人因而取的</span><span lang=EN-US style='mso-bidi-font-size:
10.5pt'> root </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的权限</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>利用</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>
/dev/port </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>字元装置档案直接存取硬碟</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>, </span><span style='mso-bidi-font-size:
10.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>网路卡</span><span lang=EN-US style='mso-bidi-font-size:10.5pt'>,
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>等设备</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt'>. </span><span lang=EN-US
style='mso-bidi-font-size:10.5pt;mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -