diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man3/ipc.3 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man3/ipc.3')
| -rw-r--r-- | static/v10/man3/ipc.3 | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/static/v10/man3/ipc.3 b/static/v10/man3/ipc.3 deleted file mode 100644 index 68679457..00000000 --- a/static/v10/man3/ipc.3 +++ /dev/null @@ -1,348 +0,0 @@ -.TH IPC 3X -.CT 2 comm_proc -.SH NAME -ipccreat, ipcopen, ipclisten, ipcaccept, ipcreject, ipcexec, ipcpath , ipclogin, ipcrogin -\(mi set up connections between processes or machines -.SH SYNOPSIS -.B #include <ipc.h> -.PP -.B char *ipcpath(name, network, service) -.br -.B char *name; -.br -.B char *network; -.br -.B char *service; -.PP -.B int ipcopen(name, param) -.br -.B char *name; -.br -.B char *param; -.PP -.B int ipccreat(name, param) -.br -.B char *name; -.br -.B char *param; -.PP -.B ipcinfo *ipclisten(fd) -.br -.B int fd; -.PP -.B int ipcaccept(ip) -.br -.B ipcinfo *ip; -.PP -.B int ipcreject(ip, no, str) -.br -.B ipcinfo *ip; -.br -.B int no; -.br -.B char *str; -.PP -.B int ipcexec(name, param, cmd) -.br -.B char *name; -.br -.B char *param; -.br -.B char *cmd; -.PP -.B int ipclogin(fd) -.br -.B int fd; -.PP -.B int ipcrogin(fd, opt) -.br -.B int fd; -.br -.B char *opt; -.PP -.B extern char *errstr; -.SH DESCRIPTION -These routines establish communication between unrelated -processes, often for networking purposes. -They are loaded by the -.B -lipc -option of -.IR ld (1). -.PP -End points in the network are identified by names of the form: -.BR element [ !element "]... " . -The name is translated element by element relative to the name space -selected by the previous element. -The first element is always a name in the local file system. -By convention, all network interfaces and services -mount themselves in -.FR /cs . -For example: -.TP -.B /cs/exec -refers to a local process which has mounted itself (via -.I ipccreat ) -on -.FR /cs/exec . -.TP -.B /cs/dk!nj/astro/voice -refers to a voice synthesizer attached -to Datakit; process -.F /cs/dk -is the Datakit interface. -.TP -.B /cs/dk!dutoit!exec -is the process that has mounted itself on -.F /cs/exec -in machine `dutoit'. -.PP -.I Ipcpath, -forms a network name from its arguments and returns a pointer to it. -It takes three arguments: the destination -.I name, -the default -.I network, -and the default -.I service. -It assumes that -.I name -is a three part name of the form: network!host!service. -If either network or service is missing from -.I name, ipcpath -supplies them -from the default arguments. -It then tacks a -.F /cs -on the front and returns a pointer to that. -Thus, -.IP -.EX -ipcpath("dutoit", "dk", "dcon") -.EE -.LP -returns a pointer to the string -.LR /cs/dk!dutoit!dcon . -.PP -.I Ipcopen -places a call to a named network end point and returns -a file descriptor for the resulting connection. -.I Param, -a whitespace-delimited string of values, specifies -properties which the connection must have. -At present four parameter values are defined: -.TF heavy -.TP -.B heavy -.br -.ns -.TP -.B light -Heavy (usually computer-to-computer) or light (computer-to-terminal) -traffic is expected. -.TP -.B delim -The connection must support delimiters; see -.IR stream (4). -.TP -.B hup -.B SIGHUP -must be generated at end of file; see -.IR signal (2). -.PD -.PP -.I Ipccreat -attaches a process to a name space. -It returns a file descriptor representing the attachment. -.I Name -and -.I param -mean the same as for -.I ipcopen. -.PP -.I Ipclisten -waits for calls (from -.I ipcopen -in other processes) appearing on file descriptor -.I fd -(obtained from -.IR ipccreat ). -When a call arrives, it returns an -.B ipcinfo -structure, defined in -.FR <ipc.h> : -.IP -.EX -.ta \w'typedef\ 'u +\w'char\ 'u +\w'reserved[5];\ 'u -typedef struct { - int reserved[5]; - char *name; that being dialed - char *param; parameters used to set up call - char *machine; machine id of caller - char *user; user name of caller - int uid, gid; uid, gid of caller -} ipcinfo; -.EE -.PP -The call may be accepted by -.I ipcaccept -or rejected by -.I ipcreject. -.I Ipcaccept -returns a file descriptor for the connection. -.I Ipcreject -takes an integer error number and an error message string, -which will be passed back to the caller as -.I errno -and -.I errstr. -.PP -A higher-level routine, -.I ipcexec, -executes the command, -.I cmd, -on a named machine. -The file descriptor returned by -.I ipcexec -is the standard input, standard output, and -standard error of the command. -As in -.I ipcopen, -.I param -lists properties required of the channel. -.PP -Once a connection is established using -.I ipcopen -it is often necessary to authenticate yourself -to the destination. -This is done using -.I ipclogin -and -.I ipcrogin. -.I Ipclogin -runs the client side of the authentication protocol -described in -.IR svcmgr (8) -for the -.I v9auth -action. -The supplied -.I fd -is the descriptor returned by -.I ipcopen. -Until the authentication is accepted, -.I ipclogin -will prompt the user (using -.F /dev/tty ) -for a login id and password to be sent over -.I fd. -.PP -.I Ipcrogin -runs the client side of the authentication protocol -used by BSD's -.I rlogin -and -.I rsh -services. -Unlike -.I ipclogin, -it will not prompt the user if the authentication -fails. -.I Ipcrogin -takes a second argument that is written to -.I fd -after the authentication is accepted. -.SH EXAMPLES -To connect to the voice synthesizer attached to the Datakit: -.EX -.ta \w'12345678'u +\w'12345678'u +\w'12345678'u -#include <ipc.h> -main() { - int fd; - fd = ipcopen(ipcpath("voice", "dk", 0), "light"); - if(fd<0){ - printf("can't connect: %s\en", errstr); - exit(1); - } - ... - close(fd); -} -.EE -.PP -To place a Dataphone call via Datakit; the service name is -derived in an obvious way from the ACU service class; see -.IR dialout (3). -.EX - fd = ipcopen(ipcpath("9-1-201-582-0000", "dk", "dial1200"), "light"); -.EE -.PP -To announce as a local service and wait for incoming calls: -.EX -.ta \w'12345678'u +\w'12345678'u +\w'12345678'u -#include <ipc.h> -main() { - int fd; - ipcinfo *ip; - fd = ipccreat("/tmp/service", 0); - if(fd<0){ - printf("can't announce: %s\en", errstr); - exit(1); - } - while(ip = ipclisten(fd)){ - int nfd; - if(i_hate_this_user(ip->machine, ip->user)) { - ipcreject(ip, EACCES, "i hate you"); - continue; - } - nfd = ipcaccept(ip); - ... - close(nfd); - } - printf("lost the announced connection somehow\en"); - exit(1); -} -.EE -.SH FILES -.TF /cs/tpc -.TP -.F /cs/dk -the announce point for the Datakit dialer -.TP -.F /cs/tcp -the announce point for the internet dialer -.SH SEE ALSO -.IR dialout (3), -.IR connld (4), -.IR dkmgr (8), -.IR svcmgr (8), -.IR tcpmgr (8) -.br -D. L. Presotto, -`Interprocess Communication in the Eighth Edition -.SM UNIX -System', -this manual, Volume 2 -.SH DIAGNOSTICS -Integer return values of \-1 and pointer return -values of 0 denote error. -.I Errno -contains an error code (see -.IR intro (2)) -and -.I errstr -points to an explanatory string. -.SH BUGS -Files created by -.I ipccreat -in the local name space are not removed when -the file descriptor returned by -.I ipccreat -is closed. -.br -Information in -.B ipcinfo -is no more trustworthy than its origin. -Information, such as user name, sent by foreign -machines may be suspect. -On Ethernet or dialup connections (but not on Datakit) -machine names can be forged. -Let's not even think about wire-swappers and wiretappers. |
