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

📄 29.html

📁 linux 0.11中文版 有注释
💻 HTML
字号:
<html>
<head>
<title>include/fcntl.h</title>
<meta name='robots' content='noindex,nofollow'>
<meta name='generator' content='GLOBAL-5.4.1'>
</head>
<body text='#191970' bgcolor='#f5f5dc' vlink='gray'>
<a name='TOP'><h2><a href='../mains.html'>root</a>/<a href='../files/99.html'>include</a>/fcntl.h</h2>
<i><font color='green'>/* [&lt;][&gt;][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
<hr>
<h2><a href='../J/29.html' title='Multiple included from 6 places.'>INCLUDED FROM</a></h2>
<hr>
<pre>
<a name='L1'><font color='darkred'>#ifndef</font> <a href='../S/29.html#L2' title='Defined at 2 in include/fcntl.h.'>_FCNTL_H</a>
<a name='L2'><font color='darkred'>#define</font> <a href='../S/29.html#L1' title='Refered from 1 in include/fcntl.h.'>_FCNTL_H</a>
<a name='L3'>
<a name='L4'><font color='darkred'>#include</font> &lt;<a href='45.html'>sys/types.h</a>&gt;          <i><font color='green'>// 类型头文件。定义了基本的系统数据类型。</font></i>
<a name='L5'>
<a name='L6'><i><font color='green'>/* open/fcntl - NOCTTY, NDELAY isn't implemented yet */</font></i>
<a name='L7'><i><font color='green'>/* open/fcntl - NOCTTY 和NDELAY 现在还没有实现 */</font></i>
<a name='L8'><font color='darkred'>#define</font> <a href='../R/184.html' title='Multiple refered from 4 places.'>O_ACCMODE</a> 00003         <i><font color='green'>// 文件访问模式屏蔽码。</font></i>
<a name='L9'><i><font color='green'>// 打开文件open()和文件控制fcntl()函数使用的文件访问模式。同时只能使用三者之一。</font></i>
<a name='L10'><font color='darkred'>#define</font> <a href='../R/194.html' title='Multiple refered from 4 places.'>O_RDONLY</a> 00             <i><font color='green'>// 以只读方式打开文件。</font></i>
<a name='L11'><font color='darkred'>#define</font> <a href='../S/14.html#L533' title='Refered from 533 in fs/namei.c.'>O_WRONLY</a> 01             <i><font color='green'>// 以只写方式打开文件。</font></i>
<a name='L12'><font color='darkred'>#define</font> <a href='../R/195.html' title='Multiple refered from 2 places.'>O_RDWR</a> 02               <i><font color='green'>// 以读写方式打开文件。</font></i>
<a name='L13'><i><font color='green'>// 下面是文件创建标志,用于open()。可与上面访问模式用'位或'的方式一起使用。</font></i>
<a name='L14'><font color='darkred'>#define</font> <a href='../R/186.html' title='Multiple refered from 3 places.'>O_CREAT</a> 00100 <i><font color='green'>/* not fcntl */</font></i>   <i><font color='green'>// 如果文件不存在就创建。</font></i>
<a name='L15'><font color='darkred'>#define</font> <a href='../S/14.html#L608' title='Refered from 608 in fs/namei.c.'>O_EXCL</a> 00200 <i><font color='green'>/* not fcntl */</font></i>    <i><font color='green'>// 独占使用文件标志。</font></i>
<a name='L16'><font color='darkred'>#define</font> O_NOCTTY 00400 <i><font color='green'>/* not fcntl */</font></i>  <i><font color='green'>// 不分配控制终端。</font></i>
<a name='L17'><font color='darkred'>#define</font> <a href='../R/196.html' title='Multiple refered from 4 places.'>O_TRUNC</a> 01000 <i><font color='green'>/* not fcntl */</font></i>   <i><font color='green'>// 若文件已存在且是写操作,则长度截为0。</font></i>
<a name='L18'><font color='darkred'>#define</font> <a href='../R/185.html' title='Multiple refered from 4 places.'>O_APPEND</a> 02000          <i><font color='green'>// 以添加方式打开,文件指针置为文件尾。</font></i>
<a name='L19'><font color='darkred'>#define</font> <a href='../R/192.html' title='Multiple refered from 3 places.'>O_NONBLOCK</a> 04000 <i><font color='green'>/* not fcntl */</font></i>        <i><font color='green'>// 非阻塞方式打开和操作文件。</font></i>
<a name='L20'><font color='darkred'>#define</font> O_NDELAY <a href='../S/29.html#L19' title='Defined at 19 in include/fcntl.h.'>O_NONBLOCK</a>     <i><font color='green'>// 非阻塞方式打开和操作文件。</font></i>
<a name='L21'>
<a name='L22'><i><font color='green'>/* Defines for fcntl-commands. Note that currently</font></i>
<a name='L23'><i><font color='green'>* locking isn't supported, and other things aren't really</font></i>
<a name='L24'><i><font color='green'>* tested.</font></i>
<a name='L25'><i><font color='green'>*/</font></i>
<a name='L26'><i><font color='green'>/* 下面定义了fcntl 的命令。注意目前锁定命令还没有支持,而其它</font></i>
<a name='L27'><i><font color='green'>* 命令实际上还没有测试过。</font></i>
<a name='L28'><i><font color='green'>*/</font></i>
<a name='L29'><i><font color='green'>// 文件句柄(描述符)操作函数fcntl()的命令。</font></i>
<a name='L30'><font color='darkred'>#define</font> <a href='../S/9.html#L79' title='Refered from 79 in fs/fcntl.c.'>F_DUPFD</a> 0 <i><font color='green'>/* dup */</font></i>     <i><font color='green'>// 拷贝文件句柄为最小数值的句柄。</font></i>
<a name='L31'><font color='darkred'>#define</font> <a href='../S/9.html#L81' title='Refered from 81 in fs/fcntl.c.'>F_GETFD</a> 1 <i><font color='green'>/* get f_flags */</font></i>     <i><font color='green'>// 取文件句柄标志。</font></i>
<a name='L32'><font color='darkred'>#define</font> <a href='../S/9.html#L83' title='Refered from 83 in fs/fcntl.c.'>F_SETFD</a> 2 <i><font color='green'>/* set f_flags */</font></i>     <i><font color='green'>// 设置文件句柄标志。</font></i>
<a name='L33'><font color='darkred'>#define</font> <a href='../S/9.html#L89' title='Refered from 89 in fs/fcntl.c.'>F_GETFL</a> 3 <i><font color='green'>/* more flags (cloexec) */</font></i>    <i><font color='green'>// 取文件状态标志和访问模式。</font></i>
<a name='L34'><font color='darkred'>#define</font> <a href='../S/9.html#L91' title='Refered from 91 in fs/fcntl.c.'>F_SETFL</a> 4               <i><font color='green'>// 设置文件状态标志和访问模式。</font></i>
<a name='L35'><i><font color='green'>// 下面是文件锁定命令。fcntl()的第三个参数lock 是指向flock 结构的指针。</font></i>
<a name='L36'><font color='darkred'>#define</font> <a href='../S/9.html#L95' title='Refered from 95 in fs/fcntl.c.'>F_GETLK</a> 5 <i><font color='green'>/* not implemented */</font></i> <i><font color='green'>// 返回阻止锁定的flock 结构。</font></i>
<a name='L37'><font color='darkred'>#define</font> <a href='../S/9.html#L96' title='Refered from 96 in fs/fcntl.c.'>F_SETLK</a> 6               <i><font color='green'>// 设置(F_RDLCK 或F_WRLCK)或清除(F_UNLCK)锁定。</font></i>
<a name='L38'><font color='darkred'>#define</font> <a href='../S/9.html#L97' title='Refered from 97 in fs/fcntl.c.'>F_SETLKW</a> 7              <i><font color='green'>// 等待设置或清除锁定。</font></i>
<a name='L39'>
<a name='L40'><i><font color='green'>/* for F_[GET|SET]FL */</font></i>
<a name='L41'><i><font color='green'>/* 用于 F_GETFL 或F_SETFL */</font></i>
<a name='L42'><i><font color='green'>// 在执行exec()簇函数时关闭文件句柄。(执行时关闭 - Close On EXECution)</font></i>
<a name='L43'><font color='darkred'>#define</font> FD_CLOEXEC 1            <i><font color='green'>/* actually anything with low bit set goes */</font></i>
<a name='L44'><i><font color='green'>/* 实际上只要低位为1 即可 */</font></i>
<a name='L45'>
<a name='L46'><i><font color='green'>/* Ok, these are locking features, and aren't implemented at any</font></i>
<a name='L47'><i><font color='green'>* level. POSIX wants them.</font></i>
<a name='L48'><i><font color='green'>*/</font></i>
<a name='L49'><i><font color='green'>/* OK,以下是锁定类型,任何函数中都还没有实现。POSIX 标准要求这些类型。</font></i>
<a name='L50'><i><font color='green'>*/</font></i>
<a name='L51'><font color='darkred'>#define</font> F_RDLCK 0               <i><font color='green'>// 共享或读文件锁定。</font></i>
<a name='L52'><font color='darkred'>#define</font> F_WRLCK 1               <i><font color='green'>// 独占或写文件锁定。</font></i>
<a name='L53'><font color='darkred'>#define</font> F_UNLCK 2               <i><font color='green'>// 文件解锁。</font></i>
<a name='L54'>
<a name='L55'><i><font color='green'>/* Once again - not implemented, but ... */</font></i>
<a name='L56'><i><font color='green'>/* 同样 - 也还没有实现,但是... */</font></i>
<a name='L57'><i><font color='green'>// 文件锁定操作数据结构。描述了受影响文件段的类型(l_type)、开始偏移(l_whence)、</font></i>
<a name='L58'><i><font color='green'>// 相对偏移(l_start)、锁定长度(l_len)和实施锁定的进程id。</font></i>
<a name='L59'><b>struct</b> flock
<a name='L60'><font color='red'>{</font>
<a name='L61'>  <b>short</b> l_type;                 <i><font color='green'>// 锁定类型(F_RDLCK,F_WRLCK,F_UNLCK)。</font></i>
<a name='L62'>  <b>short</b> l_whence;               <i><font color='green'>// 开始偏移(SEEK_SET,SEEK_CUR 或SEEK_END)。</font></i>
<a name='L63'>  <a href='../S/45.html#L32' title='Defined at 32 in include/sys/types.h.'>off_t</a> l_start;                <i><font color='green'>// 阻塞锁定的开始处。相对偏移(字节数)。</font></i>
<a name='L64'>  <a href='../S/45.html#L32' title='Defined at 32 in include/sys/types.h.'>off_t</a> l_len;                  <i><font color='green'>// 阻塞锁定的大小;如果是0 则为到文件末尾。</font></i>
<a name='L65'>  <a href='../S/45.html#L23' title='Defined at 23 in include/sys/types.h.'>pid_t</a> l_pid;                  <i><font color='green'>// 加锁的进程id。</font></i>
<a name='L66'><font color='red'>}</font>;
<a name='L67'>
<a name='L68'><i><font color='green'>// 以下是使用上述标志或命令的函数原型。</font></i>
<a name='L69'><i><font color='green'>// 创建新文件或重写一个已存在文件。</font></i>
<a name='L70'><i><font color='green'>// 参数filename 是欲创建文件的文件名,mode 是创建文件的属性(参见include/sys/stat.h)。</font></i>
<a name='L71'><b>extern</b> <b>int</b> creat (<b>const</b> <b>char</b> *filename, <a href='../S/45.html#L28' title='Defined at 28 in include/sys/types.h.'>mode_t</a> mode);
<a name='L72'><i><font color='green'>// 文件句柄操作,会影响文件的打开。</font></i>
<a name='L73'><i><font color='green'>// 参数fildes 是文件句柄,cmd 是操作命令,见上面23-30 行。</font></i>
<a name='L74'><b>extern</b> <b>int</b> fcntl (<b>int</b> fildes, <b>int</b> cmd, ...);
<a name='L75'><i><font color='green'>// 打开文件。在文件与文件句柄之间建立联系。</font></i>
<a name='L76'><i><font color='green'>// 参数filename 是欲打开文件的文件名,flags 是上面7-17 行上的标志的组合。</font></i>
<a name='L77'><b>extern</b> <b>int</b> <a href='../S/87.html#L19' title='Defined at 19 in lib/open.c.'>open</a> (<b>const</b> <b>char</b> *filename, <b>int</b> flags, ...);
<a name='L78'>
<a name='L79'><font color='darkred'>#endif</font>
</pre>
<hr>
<a name='BOTTOM'>
<i><font color='green'>/* [&lt;][&gt;][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
</body>
</html>

⌨️ 快捷键说明

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