Here are some books that describe some of the procedures I’ve discussed in this guide, as well as Unix details in specific:
Bach, Maurice J. The Design of the UNIX Operating System. Published by Prentice-Hall, 1986. ISBN 013201799750.
W. Richard Stevens. Unix Network Programming, volumes 1-2. Published by Prentice Hall. ISBNs for volumes 1-2: 013141155151, 013081081952.
W. Richard Stevens. Advanced Programming in the UNIX Environment. Published by Addison Wesley. ISBN 020143307953.
UNIX Network Programming Volume 2 home page54—includes source code from Stevens’ superfine book.
The Linux Programmer’s Guide55—in-depth section on IPC.
UNIX System Calls and Subroutines using C56—contains modest IPC information.
The Linux Kernel57—how the Linux kernel implements IPC.
There are Linux manual pages. If you run another flavor of Unix, please look at your own man pages, as these might not work on your system.
accept()58,bind()59,connect()60,dup()61,exec()62,exit()63,fcntl()64,fileno()65,fork()66,ftok()67,getpagesize()68,ipcrm69,ipcs70,kill71,kill()72,listen()73,lockf()74,lseek()75 (for the l_whence field in struct flock),mknod76,mknod()77,mmap()78,msgctl()79,msgget()80,msgsnd()81,munmap()82,open()83,pipe()84,ps85,raise()86,read()87,recv()88,semctl()89,semget()90,semop()91,send()92,shmat()93,shmctl()94,shmdt()95,shmget()96,sigaction()97,signal()98,sigpending()100,sigprocmask()101,sigsuspend()103,socket()104,socketpair()105,stat()106,wait()107,waitpid()108,write()109.https://beej.us/guide/bgnet↩︎
https://beej.us/guide/bgipc↩︎
https://beej.us/guide/bgipc/source/examples/fork1.c↩︎
https://beej.us/guide/bgipc/source/examples/sigint.c↩︎
https://beej.us/guide/bgipc/source/examples/sigusr.c↩︎
https://man.archlinux.org/man/sigaction.2↩︎
https://man.archlinux.org/man/sigwait.3↩︎
https://man.archlinux.org/man/sigwaitinfo.2↩︎
https://man.archlinux.org/man/sigtimedwait.2↩︎
https://man.archlinux.org/man/sigsuspend.2↩︎
https://man.archlinux.org/man/sigpending.2↩︎
https://man.archlinux.org/man/kill.2↩︎
https://man.archlinux.org/man/raise.3↩︎
https://man.archlinux.org/man/sigqueue.3↩︎
https://man.archlinux.org/man/sigemptyset.3↩︎
https://man.archlinux.org/man/sigfillset.3↩︎
https://man.archlinux.org/man/sigaddset.3↩︎
https://man.archlinux.org/man/sigdelset.3↩︎
https://man.archlinux.org/man/sigismember.3↩︎
https://man.archlinux.org/man/sigprocmask.2↩︎
https://man.archlinux.org/man/sigaltstack.2↩︎
https://man.archlinux.org/man/siginterrupt.3↩︎
https://man.archlinux.org/man/sigsetjmp.3↩︎
https://man.archlinux.org/man/siglongjmp.3↩︎
https://man.archlinux.org/man/signal.2↩︎
https://beej.us/guide/bgipc/source/examples/pipe1.c↩︎
https://beej.us/guide/bgipc/source/examples/pipe2.c↩︎
https://beej.us/guide/bgipc/source/examples/pipe3.c↩︎
https://beej.us/guide/bgipc/source/examples/speak.c↩︎
https://beej.us/guide/bgipc/source/examples/tick.c↩︎
POSIX says PIPE_BUF will be at least 512 bytes. So that’s your portable safe zone.↩︎
https://beej.us/guide/bgipc/source/examples/lockdemo.c↩︎
https://en.wikipedia.org/wiki/POSIX↩︎
https://beej.us/guide/bgipc/source/examples/kirk.c↩︎
https://beej.us/guide/bgipc/source/examples/spock.c↩︎
https://beej.us/guide/bgipc/source/examples/semdemo.c↩︎
https://beej.us/guide/bgipc/source/examples/semdemo.c↩︎
https://beej.us/guide/bgipc/source/examples/semrm.c↩︎
Or whatever the current addictive FPS game is these days.↩︎
https://en.wikipedia.org/wiki/Concurrency↩︎
https://beej.us/guide/bgipc/source/examples/shmdemo.c↩︎
https://beej.us/guide/bgipc/source/examples/mmapdemo.c↩︎
https://beej.us/guide/bgnet↩︎
https://beej.us/guide/bgnet↩︎
https://beej.us/guide/bgnet↩︎
https://man.archlinux.org/man/shutdown.2↩︎
https://beej.us/guide/bgipc/source/examples/echos.c↩︎
https://beej.us/guide/bgipc/source/examples/echoc.c↩︎
https://beej.us/guide/bgipc/source/examples/spair.c↩︎
https://beej.us/guide/url/unixdesign↩︎
https://beej.us/guide/url/unixnet1↩︎
https://beej.us/guide/url/unixnet2↩︎
https://beej.us/guide/url/advunix↩︎
http://www.kohala.com/start/unpv22e/unpv22e.html↩︎
http://tldp.org/LDP/lpg/node7.html↩︎
https://users.cs.cf.ac.uk/Dave.Marshall/C/↩︎
https://tldp.org/LDP/tlk/ipc/ipc.html↩︎
https://man.archlinux.org/man/accept.2↩︎
https://man.archlinux.org/man/bind.2↩︎
https://man.archlinux.org/man/connect.2↩︎
https://man.archlinux.org/man/dup.2↩︎
https://man.archlinux.org/man/exec.2↩︎
https://man.archlinux.org/man/exit.2↩︎
https://man.archlinux.org/man/fcntl.2↩︎
https://man.archlinux.org/man/fileno.3↩︎
https://man.archlinux.org/man/fork.2↩︎
https://man.archlinux.org/man/ftok.3↩︎
https://man.archlinux.org/man/getpagesize.2↩︎
https://man.archlinux.org/man/ipcrm.8↩︎
https://man.archlinux.org/man/ipcs.8↩︎
https://man.archlinux.org/man/kill.1↩︎
https://man.archlinux.org/man/kill.2↩︎
https://man.archlinux.org/man/listen.2↩︎
https://man.archlinux.org/man/lockf.2↩︎
https://man.archlinux.org/man/lseek.2↩︎
https://man.archlinux.org/man/mknod.1↩︎
https://man.archlinux.org/man/mknod.2↩︎
https://man.archlinux.org/man/mmap.2↩︎
https://man.archlinux.org/man/msgctl.2↩︎
https://man.archlinux.org/man/msgget.2↩︎
https://man.archlinux.org/man/msgsnd.2↩︎
https://man.archlinux.org/man/munmap.2↩︎
https://man.archlinux.org/man/open.2↩︎
https://man.archlinux.org/man/pipe.2↩︎
https://man.archlinux.org/man/ps.1↩︎
https://man.archlinux.org/man/raise.3↩︎
https://man.archlinux.org/man/read.2↩︎
https://man.archlinux.org/man/recv.2↩︎
https://man.archlinux.org/man/semctl.2↩︎
https://man.archlinux.org/man/semget.2↩︎
https://man.archlinux.org/man/semop.2↩︎
https://man.archlinux.org/man/send.2↩︎
https://man.archlinux.org/man/shmat.2↩︎
https://man.archlinux.org/man/shmctl.2↩︎
https://man.archlinux.org/man/shmdt.2↩︎
https://man.archlinux.org/man/shmget.2↩︎
https://man.archlinux.org/man/sigaction.2↩︎
https://man.archlinux.org/man/signal.2↩︎
https://man.archlinux.org/man/signal.7↩︎
https://man.archlinux.org/man/sigpending.2↩︎
https://man.archlinux.org/man/sigprocmask.2↩︎
https://man.archlinux.org/man/sigsetopts.2↩︎
https://man.archlinux.org/man/sigsuspend.2↩︎
https://man.archlinux.org/man/socket.2↩︎
https://man.archlinux.org/man/socketpair.2↩︎
https://man.archlinux.org/man/stat.2↩︎
https://man.archlinux.org/man/wait.2↩︎
https://man.archlinux.org/man/waitpid.2↩︎
https://man.archlinux.org/man/write.2↩︎