| Contents |

14 Tài Nguyên IPC Bổ Sung

14.1 Sách

Dưới đây là một số cuốn sách mô tả một số quy trình tôi đã thảo luận trong hướng dẫn này, cũng như các chi tiết Unix cụ thể:

Bach, Maurice J. The Design of the UNIX Operating System. Published by Prentice-Hall, 1986. ISBN 013201799764.

W. Richard Stevens. Unix Network Programming, volumes 1-2. Published by Prentice Hall. ISBNs for volumes 1-2: 013141155165, 013081081966.

W. Richard Stevens. Advanced Programming in the UNIX Environment. Published by Addison Wesley. ISBN 020143307967.

14.2 Tài Liệu Trực Tuyến Khác

Trang chủ UNIX Network Programming Volume 268—bao gồm mã nguồn từ cuốn sách xuất sắc của Stevens.

Hướng Dẫn Lập Trình Viên Linux69—phần chuyên sâu về IPC.

UNIX System Calls and Subroutines using C70—chứa một số thông tin IPC khiêm tốn.

Nhân Linux71—cách nhân Linux triển khai IPC.

14.3 Trang Man Linux

Đây là các trang hướng dẫn Linux. Nếu bạn chạy một phiên bản Unix khác, hãy xem các trang man của riêng bạn, vì những trang này có thể không hoạt động trên hệ thống của bạn.


  1. https://beej.us/guide/bgnet↩︎

  2. https://beej.us/guide/bgipc↩︎

  3. https://beej.us/guide/bgipc/source/examples/fork1.c↩︎

  4. Mẹo vui: khi bạn nhấn CTRL-Z trong terminal trong khi đang chạy một chương trình ở foreground, nó sẽ gửi SIGSTOP đến tiến trình đó và shell báo cáo rằng nó đã bị dừng hoặc tạm dừng. Nếu bạn gõ fg, nó sẽ đưa tiến trình đó trở lại foreground và gửi SIGCONT để tiếp tục chạy từ chỗ đã dừng.↩︎

  5. https://beej.us/guide/bgipc/source/examples/sigint.c↩︎

  6. https://en.wikipedia.org/wiki/Reentrancy_(computing)↩︎

  7. https://beej.us/guide/bgipc/source/examples/sigcount.c↩︎

  8. https://beej.us/guide/bgipc/source/examples/sigstrtok.c↩︎

  9. Và nó dùng write()printf() không phải reentrant!↩︎

  10. https://beej.us/guide/bgipc/source/examples/sigusr.c↩︎

  11. https://man.archlinux.org/man/sigaction.2↩︎

  12. https://man.archlinux.org/man/sigwait.3↩︎

  13. https://man.archlinux.org/man/sigwaitinfo.2↩︎

  14. https://man.archlinux.org/man/sigtimedwait.2↩︎

  15. https://man.archlinux.org/man/sigsuspend.2↩︎

  16. https://man.archlinux.org/man/sigpending.2↩︎

  17. https://man.archlinux.org/man/kill.2↩︎

  18. https://man.archlinux.org/man/raise.3↩︎

  19. https://man.archlinux.org/man/sigqueue.3↩︎

  20. https://man.archlinux.org/man/sigemptyset.3↩︎

  21. https://man.archlinux.org/man/sigfillset.3↩︎

  22. https://man.archlinux.org/man/sigaddset.3↩︎

  23. https://man.archlinux.org/man/sigdelset.3↩︎

  24. https://man.archlinux.org/man/sigismember.3↩︎

  25. https://man.archlinux.org/man/sigprocmask.2↩︎

  26. https://man.archlinux.org/man/sigaltstack.2↩︎

  27. https://man.archlinux.org/man/siginterrupt.3↩︎

  28. https://man.archlinux.org/man/sigsetjmp.3↩︎

  29. https://man.archlinux.org/man/siglongjmp.3↩︎

  30. https://man.archlinux.org/man/signal.2↩︎

  31. Bạn có thể ghi đè điều này với SA_NODEFER trong sa_flags, nhưng đó chắc chắn là con đường dẫn đến điên loạn.↩︎

  32. Nếu bạn đang dùng POSIX thread, hãy dùng tương đương pthread_sigmask() thay thế, để thực hiện điều này trên cơ sở từng thread.↩︎

  33. https://beej.us/guide/bgipc/source/examples/sigblock.c↩︎

  34. https://beej.us/guide/bgnet/↩︎

  35. https://beej.us/guide/bgnet/html/split/slightly-advanced-techniques.html#poll↩︎

  36. https://beej.us/guide/bgnet/html/split/slightly-advanced-techniques.html#select↩︎

  37. https://beej.us/guide/bgipc/source/examples/pipesig.c↩︎

  38. https://beej.us/guide/bgipc/source/examples/pselect.c↩︎

  39. https://beej.us/guide/bgipc/source/examples/pipe1.c↩︎

  40. https://beej.us/guide/bgipc/source/examples/pipe2.c↩︎

  41. https://beej.us/guide/bgipc/source/examples/pipe3.c↩︎

  42. https://beej.us/guide/bgipc/source/examples/speak.c↩︎

  43. https://beej.us/guide/bgipc/source/examples/tick.c↩︎

  44. POSIX nói PIPE_BUF sẽ ít nhất 512 byte. Vì vậy đó là vùng an toàn di động của bạn.↩︎

  45. https://beej.us/guide/bgipc/source/examples/lockdemo.c↩︎

  46. https://en.wikipedia.org/wiki/POSIX↩︎

  47. https://beej.us/guide/bgipc/source/examples/kirk.c↩︎

  48. https://beej.us/guide/bgipc/source/examples/spock.c↩︎

  49. https://beej.us/guide/bgipc/source/examples/semdemo.c↩︎

  50. https://beej.us/guide/bgipc/source/examples/semdemo.c↩︎

  51. https://beej.us/guide/bgipc/source/examples/semrm.c↩︎

  52. Hoặc bất kỳ trò chơi FPS gây nghiện nào hiện tại.↩︎

  53. https://en.wikipedia.org/wiki/Concurrency↩︎

  54. https://beej.us/guide/bgipc/source/examples/shmdemo.c↩︎

  55. https://beej.us/guide/bgipc/source/examples/mmapdemo.c↩︎

  56. https://beej.us/guide/bgipc/source/examples/mmap_anon.c↩︎

  57. https://beej.us/guide/bgnet↩︎

  58. https://beej.us/guide/bgnet↩︎

  59. https://beej.us/guide/bgnet↩︎

  60. https://man.archlinux.org/man/shutdown.2↩︎

  61. https://beej.us/guide/bgipc/source/examples/echos.c↩︎

  62. https://beej.us/guide/bgipc/source/examples/echoc.c↩︎

  63. https://beej.us/guide/bgipc/source/examples/spair.c↩︎

  64. https://beej.us/guide/url/unixdesign↩︎

  65. https://beej.us/guide/url/unixnet1↩︎

  66. https://beej.us/guide/url/unixnet2↩︎

  67. https://beej.us/guide/url/advunix↩︎

  68. http://www.kohala.com/start/unpv22e/unpv22e.html↩︎

  69. http://tldp.org/LDP/lpg/node7.html↩︎

  70. https://users.cs.cf.ac.uk/Dave.Marshall/C/↩︎

  71. https://tldp.org/LDP/tlk/ipc/ipc.html↩︎

  72. https://man.archlinux.org/man/accept.2↩︎

  73. https://man.archlinux.org/man/bind.2↩︎

  74. https://man.archlinux.org/man/connect.2↩︎

  75. https://man.archlinux.org/man/dup.2↩︎

  76. https://man.archlinux.org/man/exec.2↩︎

  77. https://man.archlinux.org/man/exit.2↩︎

  78. https://man.archlinux.org/man/fcntl.2↩︎

  79. https://man.archlinux.org/man/fileno.3↩︎

  80. https://man.archlinux.org/man/fork.2↩︎

  81. https://man.archlinux.org/man/ftok.3↩︎

  82. https://man.archlinux.org/man/getpagesize.2↩︎

  83. https://man.archlinux.org/man/ipcrm.8↩︎

  84. https://man.archlinux.org/man/ipcs.8↩︎

  85. https://man.archlinux.org/man/kill.1↩︎

  86. https://man.archlinux.org/man/kill.2↩︎

  87. https://man.archlinux.org/man/listen.2↩︎

  88. https://man.archlinux.org/man/lockf.2↩︎

  89. https://man.archlinux.org/man/lseek.2↩︎

  90. https://man.archlinux.org/man/mknod.1↩︎

  91. https://man.archlinux.org/man/mknod.2↩︎

  92. https://man.archlinux.org/man/mmap.2↩︎

  93. https://man.archlinux.org/man/msgctl.2↩︎

  94. https://man.archlinux.org/man/msgget.2↩︎

  95. https://man.archlinux.org/man/msgsnd.2↩︎

  96. https://man.archlinux.org/man/munmap.2↩︎

  97. https://man.archlinux.org/man/open.2↩︎

  98. https://man.archlinux.org/man/pipe.2↩︎

  99. https://man.archlinux.org/man/ps.1↩︎

  100. https://man.archlinux.org/man/raise.3↩︎

  101. https://man.archlinux.org/man/read.2↩︎

  102. https://man.archlinux.org/man/recv.2↩︎

  103. https://man.archlinux.org/man/semctl.2↩︎

  104. https://man.archlinux.org/man/semget.2↩︎

  105. https://man.archlinux.org/man/semop.2↩︎

  106. https://man.archlinux.org/man/send.2↩︎

  107. https://man.archlinux.org/man/shmat.2↩︎

  108. https://man.archlinux.org/man/shmctl.2↩︎

  109. https://man.archlinux.org/man/shmdt.2↩︎

  110. https://man.archlinux.org/man/shmget.2↩︎

  111. https://man.archlinux.org/man/sigaction.2↩︎

  112. https://man.archlinux.org/man/signal.2↩︎

  113. https://man.archlinux.org/man/signal.7↩︎

  114. https://man.archlinux.org/man/sigpending.2↩︎

  115. https://man.archlinux.org/man/sigprocmask.2↩︎

  116. https://man.archlinux.org/man/sigsetopts.2↩︎

  117. https://man.archlinux.org/man/sigsuspend.2↩︎

  118. https://man.archlinux.org/man/socket.2↩︎

  119. https://man.archlinux.org/man/socketpair.2↩︎

  120. https://man.archlinux.org/man/stat.2↩︎

  121. https://man.archlinux.org/man/wait.2↩︎

  122. https://man.archlinux.org/man/waitpid.2↩︎

  123. https://man.archlinux.org/man/write.2↩︎


| Contents |