📄 posix10.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher Professional Edition 6.0.5">
<meta name="TEMPLATEBASE" content="book_html">
<meta name="LASTUPDATED" content="12/04/03 16:07:18">
<title>17.7.2 Opening a device </title>
<STYLE TYPE="text/css">
<!--
span.Signal { text-transform: uppercase; font-family: Verdana }
-->
</STYLE>
</head>
<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">
<p><img src="images/stlogo.gif" width="106" height="83" align="left"
alt="logo here!"> </p>
<table width="331" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td><a href="a_refman.htm"><img src="images/navtoc.gif" width="84" height="23"
border="0" alt="TOC"> </a></td>
<td><a href="posix9.htm"><img src="images/navprev.gif" width="80" height="23"
border="0" alt="PREV"> </a></td>
<td><a href="posix11.htm"><img src="images/navnext.gif" width="83" height="23"
border="0" alt="NEXT"> </a></td>
<td><a href="a_refmaa.htm"><img src="images/navidx.gif" width="84" height="23"
border="0" alt="INDEX"> </a></td>
</tr>
</table>
<p><br clear="all">
</p>
<hr align="left">
<blockquote>
<h3>
<a name="1204562"> </a><font color="#003366" face="Verdana, Arial, Helvetica, sans-serif">17.7.2 Opening a device</font>
</h3>
<p>
<a name="1204563"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The device may be opened with either the ANSI call, for example:</font>
</p>
<a name="1204564"> </a><font size=2 face=Courier><strong>FILE *f;<br>f = fopen("mydevice:", "r");<br></strong></font>
<p>
<a name="1204566"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">or the POSIX call, for example:</font>
</p>
<a name="1204567"> </a><font size=2 face=Courier><strong>int fd;<br>fd = open("mydevice:", O_RDONLY);<br></strong></font>
<p>
<a name="1204569"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Each of these function calls executes a call to the open callback function <font size=2 face=Courier><strong>my_device_open</strong></font> with the following arguments:</font>
</p>
<a name="1204570"> </a><font size=2 face=Courier><strong>long int r = my_device_open("", O_RDONLY);<br></strong></font>
<p>
<a name="1204571"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">This callback function performs device-specific functionality. The open callback should return <font size=2 face=Courier><strong>-1</strong></font> if it fails to open the device or any other long integer handle on success. The value of the handle returned on success is arbitrary and device-specific and it is passed to many of the callback functions registered in the <font size=2 face=Courier><strong>dev_op_t</strong></font> and <font size=2 face=Courier><strong>file_operations_t</strong></font> structures for operations on an open file. This allows a filesystem to be implemented on a device.</font>
</p>
<p>
<a name="1208145"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">For example, the following code:</font>
</p>
<a name="1204573"> </a><font size=2 face=Courier><strong>int fd, fd2;<br>fd = open("mydevice:/mydir/myfile", O_RDONLY);<br>fd2 = open("mydevice:/mydir/myfile_2", O_RDONLY);<br></strong></font>
<p>
<a name="1204576"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">calls:</font>
</p>
<a name="1204577"> </a><font size=2 face=Courier><strong>m = my_device_open("/mydir/myfile", O_RDONLY);<br>n = my_device_open("/mydir/myfile_2", O_RDONLY);<br></strong></font>
<p>
<a name="1204579"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">which return respectively, non-negative long integer handles <font size=2 face=Courier><strong>m</strong></font> and <font size=2 face=Courier><strong>n</strong></font> on success. See <a href="posix11.htm#1204585"><font color="#0000ff" face="Verdana, Arial, Helvetica, sans-serif"><i>Section
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -