aboutsummaryrefslogtreecommitdiff
path: root/man/man3/open.html
blob: 64f85c559d15ba5cdee6a2d858bee257caffd4e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<head>
<title>open(3) - Plan 9 from User Space</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
</head>
<body bgcolor=#ffffff>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=10><td>
<tr><td width=20><td>
<tr><td width=20><td><b>OPEN(3)</b><td align=right><b>OPEN(3)</b>
<tr><td width=20><td colspan=2>
    <br>
<p><font size=+1><b>NAME     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    open, create, close &ndash; open a file for reading or writing, create
    file<br>
    
</table>
<p><font size=+1><b>SYNOPSIS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>#include &lt;u.h&gt;<br>
    #include &lt;libc.h&gt; 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int open(char *file, int omode) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int create(char *file, int omode, ulong perm) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int close(int fd)<br>
    </font></tt>
</table>
<p><font size=+1><b>DESCRIPTION     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <i>Open</i> opens the <i>file</i> for I/O and returns an associated file descriptor.
    <i>Omode</i> is one of <tt><font size=+1>OREAD</font></tt>, <tt><font size=+1>OWRITE</font></tt>, <tt><font size=+1>ORDWR</font></tt>, or <tt><font size=+1>OEXEC</font></tt>, asking for permission
    to read, write, read and write, or execute, respectively. In addition,
    there are three values that can be ORed with the <i>omode</i>: <tt><font size=+1>OTRUNC</font></tt>
    says to truncate the file to zero length
    before opening it; <tt><font size=+1>OCEXEC</font></tt> says to close the file when an <a href="../man3/exec.html"><i>exec</i>(3)</a>
    or <i>execl</i> system call is made; and <tt><font size=+1>ORCLOSE</font></tt> says to remove the file
    when it is closed (by everyone who has a copy of the file descriptor).
    <i>Open</i> fails if the file does not exist or the user does not have
    permission to open it for the requested purpose (see
    <a href="../man3/stat.html"><i>stat</i>(3)</a> for a description of permissions). The user must have
    write permission on the <i>file</i> if the <tt><font size=+1>OTRUNC</font></tt> bit is set. For the
    <i>open</i> system call (unlike the implicit <i>open</i> in <a href="../man3/exec.html"><i>exec</i>(3)</a>), <tt><font size=+1>OEXEC</font></tt>
    is actually identical to <tt><font size=+1>OREAD</font></tt>. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Create</i> creates a new <i>file</i> or prepares to rewrite an existing <i>file</i>,
    opens it according to <i>omode</i> (as described for <i>open</i>), and returns
    an associated file descriptor. If the file is new, the owner is
    set to the userid of the creating process group; the group to
    that of the containing directory; the permissions to <i>perm</i> ANDed
    with
    the permissions of the containing directory. If the file already
    exists, it is truncated to 0 length, and the permissions, owner,
    and group remain unchanged. The created file is a directory if
    the <tt><font size=+1>DMDIR</font></tt> bit is set in <i>perm</i>, an exclusive-use file if the <tt><font size=+1>DMEXCL</font></tt>
    bit is set, and an append-only file if the <tt><font size=+1>DMAPPEND</font></tt> bit is set.
    Exclusive-use files may be open for I/O by only one client at
    a time, but the file descriptor may become invalid if no I/O is
    done for an extended period; see <i>open</i>(9p). 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Create</i> fails if the path up to the last element of <i>file</i> cannot
    be evaluated, if the user doesn&#8217;t have write permission in the
    final directory, if the file already exists and does not permit
    the access defined by <i>omode</i>, of if there there are no free file
    descriptors. In the last case, the file may be created even when
    an error is
    returned. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    Since <i>create</i> may succeed even if the file exists, a special mechanism
    is necessary for those applications that require an atomic create
    operation. If the <tt><font size=+1>OEXCL</font></tt> (<tt><font size=+1>0x1000</font></tt>) bit is set in the <i>mode</i> for a
    <i>create,</i> the call succeeds only if the file does not already exist;
    see <i>open</i>(9p) for details. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Close</i> closes the file associated with a file descriptor. Provided
    the file descriptor is a valid open descriptor, <i>close</i> is guaranteed
    to close it; there will be no error. Files are closed automatically
    upon termination of a process; <i>close</i> allows the file descriptor
    to be reused.<br>
    
</table>
<p><font size=+1><b>SOURCE     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
    </font></tt>
</table>
<p><font size=+1><b>SEE ALSO    </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/stat.html"><i>stat</i>(3)</a><br>
    
</table>
<p><font size=+1><b>DIAGNOSTICS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    These functions set <i>errstr</i>.<br>
    
</table>

<td width=20>
<tr height=20><td>
</table>
<!-- TRAILER -->
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=15><td width=10><td><td width=10>
<tr><td><td>
<center>
<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
</center>
</table>
<!-- TRAILER -->
</body></html>