X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=web%2Fmanual.m4;h=0182c5157fa8ff04f835c2aa862b9092a91636c0;hp=0a5f580a79d4fbe603aa87c90c959e90b4d089ce;hb=fdbdd1fd575d7d37d4fb182252107a4d3816853c;hpb=00e95557839f3fef5fa06702f3864e8376d2a29b;ds=sidebyside diff --git a/web/manual.m4 b/web/manual.m4 index 0a5f580a..0182c515 100644 --- a/web/manual.m4 +++ b/web/manual.m4 @@ -2145,6 +2145,35 @@ maintain state for each listening receiver, multicast often implies connectionless transport, which is the reason that it is currently only available via UDP. +Abstract socket namespace +~~~~~~~~~~~~~~~~~~~~~~~~~ +UNIX domain sockets are a traditional way to communicate between +processes on the same machine. They are always reliable (see above) +and don't reorder datagrams. Unlike TCP and UDP, UNIX domain sockets +support passing open file descriptors or process credentials to +other processes. + +The usual way to set up a UNIX domain socket (as obtained from +socket(2)) for listening is to first bind the socket to a file system +pathname and then call listen(2), then accept(2). Such sockets are +called _pathname sockets_ because bind(2) creates a special socket +file at the specified path. Pathname sockets allow unrelated processes +to communicate with the listening process by binding to the same path +and calling connect(2). + +There are two problems with pathname sockets: + + * The listing process must be able to (safely) create the + socket special in a directory which is also accessible to + the connecting process. + + * After an unclean shutdown of the listening process, a stale + socket special may reside on the file system. + +The abstract socket namespace is a non-portable Linux feature which +avoids these problems. Abstract sockets are still bound to a name, +but the name has no connection with file system pathnames. + License ~~~~~~~