blob: a52c5bac62047d8d156c557d65c6079b6f138547 [file] [log] [blame]
<html lang="en">
<head>
<title>Local Namespace Concepts - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Local-Namespace.html#Local-Namespace" title="Local Namespace">
<link rel="next" href="Local-Namespace-Details.html#Local-Namespace-Details" title="Local Namespace Details">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Local-Namespace-Concepts"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Local-Namespace-Details.html#Local-Namespace-Details">Local Namespace Details</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Local-Namespace.html#Local-Namespace">Local Namespace</a>
<hr>
</div>
<h4 class="subsection">16.5.1 Local Namespace Concepts</h4>
<p>In the local namespace socket addresses are file names. You can specify
any file name you want as the address of the socket, but you must have
write permission on the directory containing it.
<!-- XXX The following was said to be wrong. -->
<!-- In order to connect to a socket you must have read permission for it. -->
It's common to put these files in the <samp><span class="file">/tmp</span></samp> directory.
<p>One peculiarity of the local namespace is that the name is only used
when opening the connection; once open the address is not meaningful and
may not exist.
<p>Another peculiarity is that you cannot connect to such a socket from
another machine&ndash;not even if the other machine shares the file system
which contains the name of the socket. You can see the socket in a
directory listing, but connecting to it never succeeds. Some programs
take advantage of this, such as by asking the client to send its own
process ID, and using the process IDs to distinguish between clients.
However, we recommend you not use this method in protocols you design,
as we might someday permit connections from other machines that mount
the same file systems. Instead, send each new client an identifying
number if you want it to have one.
<p>After you close a socket in the local namespace, you should delete the
file name from the file system. Use <code>unlink</code> or <code>remove</code> to
do this; see <a href="Deleting-Files.html#Deleting-Files">Deleting Files</a>.
<p>The local namespace supports just one protocol for any communication
style; it is protocol number <code>0</code>.
</body></html>