Open System Services Programmer's Guide

getpeername() has the /E/local_system/ prefix (if present) stripped, all symbolic links
resolved, all /./ strings suppressed, and all /../ strings resolved.
If the file to which a socket is bound is removed or renamed, calls to getsockname() continue
to return the original absolute path name.
If the file to which a datagram socket is bound is removed or renamed, and then a send
operation is performed on the socket, a recvfrom() or recvmsg() call on the receiving
socket returns the original pathname in the address parameter.
Portability mode sockets are more efficient because getsockname(), recvfrom() and
recvmsg() no longer require an interaction with an OSS name server.
A call to listen() with a backlog parameter less than or equal to 0 (zero) causes
subsequent blocking connect() calls to block until there is a corresponding accept() call.
This differs from the behavior for compatibility mode, in which calls to connect() fail with
the ECONNREFUSED error unless the socket has a pending accept() call.
You can create sockets in portability mode using one of these methods:
Use the Guardian DEFINE =_AFUNIX_PROCESS_NAME to specify $ZAFN2 as the default
transport-provider name. This Guardian define must be a MAP DEFINE with a FILE attribute
string of the desired AF_UNIX transport-provider name. For example:
TACL> ADD DEFINE =_AFUNIX_PROCESS_NAME,CLASS MAP,FILE $ZAFN2
or
OSH> add_define =_AFUNIX_PROCESS_NAME class=MAP file=\$ZAFN2
NOTE: Although the name $ZAFN2 is used as a transport-provider name, $ZAFN2 is not
a process that runs on the system.
Use the socket_transport_name_set() function to specify $ZAFN2 as the
transport-provider name. This method overrides the default transport-provider name and allows
you to create sockets in either mode within the same application.
Using FIFOs
OSS and Guardian processes can communicate using FIFOs:
Within the same processor
Between processors
Between nodes (by way of the /E directory)
However, they cannot communicate using unnamed pipes. Unnamed pipes can only be used to
communicate between OSS processes.
Using Shared Memory
In the Guardian environment, both flat and selectable memory segments can be created and
shared. Guardian processes can share and synchronize access to memory using Guardian shared
memory and semaphore functions. OSS processes can share and synchronize access to memory
with other OSS processes using OSS shared memory and semaphore functions. The shared memory
segments created and managed by OSS shm*() functions are distinct from segments created by
the Guardian SEGMENT_ALLOCATE_ and related procedure calls. Both kinds of segments can be
created and shared, but one kind cannot be shared with the other.
Both Guardian and OSS processes can call SEGMENT_ALLOCATE_ and related Guardian
procedure calls: they can share segments as described for SEGMENT_ALLOCATE_.
Interprocess-Communication Interoperability 189