Provided by: manpages-zh_1.5-1_all bug

NAME(SYNOPSIS()
       #include <sys/socket.h>
       #include <sys/un.h>

       unix_socket = socket(PF_UNIX, type, 0);
       error = socketpair(PF_UNIX, type, 0, int *sv);

DESCRIPTION(z)
       PF_UNIX                (也稱作                PF_LOCAL                )
       套接字æ—用來在åŒä¸€æ©Ÿå™¨ä¸Šçš„æä¾›æœ‰æ•ˆçš„進程間通訊.Unix
       套接字å¯ä»¥æ˜¯åŒ¿åçš„(ç”±               socketpair(2)                創建),
       也å¯ä»¥èˆ‡å¥—接字類型檔案相關è¯.        Linux      還支æŒä¸€ç¨®æŠ½è±¡å字空間,
       它是ç¨ç«‹æ–¼æª”案系統的.

       有效的類型有:   SOCK_STREAM   用於惘Væµçš„套接字,    SOCK_DGRAM    用於-
       惘V數據報的套接字,å…¶å¯ä»¥ä¿å­˜æ¶ˆæ¯ç•Œ.    Unix  套接字總是å¯é çš„,è€Œä¸”ä¸æœƒ-
       垓梩ç—.

       Unix        å¥—æŽ¥å­—æ”¯æŒæŠŠæª”æ¡ˆæz符或者進程的信用証明作為數據報的輔助數據
       傳éžçµ¦å…¶å®ƒé€²ç¨‹ï¼Ž

ADDRESS FORMAT()
       unix 地å€å®šç¾©ç‚ºæª”案系統中的一蚗犰W 或者抽象å字空間中的一茬瞈W的字符串.
       ç”± socketpair(2) 創建的套接字是匿åçš„.å°æ–¼éžåŒ¿å的套接字,目標地å€å¯ä½¿ç”¨
       connect(2)        設置.        本地地å€å¯ä½¿ç”¨       bind(2)       設置.
       當套接字連接上而且它沒有一茈誚aåœ°å€æ™‚,    會自動在抽象å字空間中生æˆä¸€-
       èŒè‰‰@的地å€.

              #define UNIX_PATH_MAX   108

              struct sockaddr_un {
              sa_family_t     sun_family;     /* AF_UNIX */
              char    sun_path[UNIX_PATH_MAX];        /* 路徑å */
              };

       sun_family            ç¸½æ˜¯åŒ…å«            AF_UNIX.             sun_path
       包å«ç©ºé›¶çµå°¾çš„套接字在檔案系統中的路徑å.         如果         sun_path
       以空零字節開頭,它指å‘ç”±         Unix        å”議模塊維護的抽象å字空間.
       該套接字在此å字空間中的地å€ç”±        sun_path        中的剩餘字節給定.
       æ³¨æ„æŠ½è±¡å字空間的åå­—éƒ½ä¸æ˜¯ç©ºé›¶çµ‚止的.

SOCKET OPTIONS()
       由於歷å²é´ž],  這些套接字é¸é …é€šéŽ SOL_SOCKET 類型確定, å³ä½¿å®ƒæ€“O PF_UNIX
       指定的.    它怚i以由   setsockopt(2)   設置.     é€šéŽæŒ‡å®š    SOL_SOCKET
       ä½œç‚ºå¥—æŽ¥å­—æ— ç”¨ getsockopt(2) 來讀å–.

       SO_PASSCRED                         å…許接收進程輔助信æ¯ç™¼é€çš„信用証明.
       當設置了該é¸é …且套接字尚未連接時,                       則會自動生æˆä¸€-
       茤æ¼Hå字空間的唯一åå­—.  陘@蚞蒱牯蜈é™.

ANCILLARY MESSAGES()
       由於歷å²é´ž],這些輔助信æ¯é¡žåž‹é€šéŽ SOL_SOCKET 類型確定, å³ä½¿å®ƒæ€“O PF_UNIX
       指定的.  n發é€å®ƒ, å¯è¨­ç½®çµæ§‹ cmsghdr çš„ cmsg_level 字段為  SOL_SOCKET,
       並設置 cmsg_type 字段為其類型. nç²å¾—更多信æ¯, è«‹åƒçœ‹ cmsg(3).

       SCM_RIGHTS
              ç‚ºå…¶ä»–é€²ç¨‹ç™¼é€æˆ–接收一套打開檔案æz符.  其數據部分包å«ä¸€èš—仵袨y-
              z符的整型數組.       已傳檔案æz符的效果就如它怳wç”±       dup(2)
              創建éŽä¸€æ¨£.

       SCM_CREDENTIALS
              ç™¼é€æˆ–者接收  unix  信用証明.   å¯ç”¨ä½œèªè¨¼.信用証明傳é€ä»¥ struct
              ucred 輔助信æ¯çš„å½¢å¼å‚³é€ï¼Ž

              struct ucred {
              pid_t   pid;     /* 發é€é€²ç¨‹çš„進程標識 */
              uid_t   uid;     /* 發é€é€²ç¨‹çš„使用者標識 */
              gid_t   gid;     /* 發é€é€²ç¨‹çš„組標識 */
              };

       發é€è€…確定的信用証明由核心檢查.         一è“a有有效使用者標識         0
       的進程å…許指定ä¸èˆ‡å…¶è‡ªäºžç›¸                 匹é…çš„.發é€è€…必須確定其自-
       的進程標識(除éžå®ƒå¸¶æœ‰                                   CAP_SYS_ADMIN),
       其使用者標識,有效使用者標識或者設置使用者標識(除éžå®ƒå¸¶æœ‰   CAP_SETUID),
       以åŠå…¶çµ„標識,有效組標識或者設置組標識(除éžå®ƒå¸¶æœ‰           CAP_SETGID).
       ç‚ºäº†æŽ¥æ”¶ä¸€æ¢ struct ucred 消æ¯,必須在套接字上激活 SO_PASSCRED é¸é ….

VERSIONS()
       SCM_CREDENTIALS   和抽象å字空間是在   Linux   2.2   中引入的,䏿‡‰è©²åœ¨-
       n求å¯ç§»æ¤çš„程å¼ä¸­ä½¿ç”¨.

NOTES()
       在 Linux 實ç¾ä¸­, 在檔案系統中å¯è¦‹çš„å¥—æŽ¥å­—æ“æœ‰å®ƒæ€ç‹¾b目錄的權許å¯.   它-
       æ€æ¼«ç‹¾é‡­,組和權å¯ä»¥ä½œèš¹.
       å¦‚æžœé€²ç¨‹ä¸æ“有å°å‰µå»ºçš„套接字所在目錄的寫和æœç´¢(執行)權,       則創建一-
       虓s的套接字會失敗.     這種執行方å¼èˆ‡è¨±å¤šç”±   BSD   發展而來的系統ä¸åŒ,
       那些系統會忽略                   Unix                   套接字所需的權.
       å¯ç§»æ¤çš„程å¼ä¸æ‡‰æŠŠé€™é …功能用於安全方情D

       ç¶å®šæª”å到套接字會在檔案系統中創建一è‡M接字,       這è‡M接字在它ä¸å†éœ€-
       n時必須由調用者  刪除(使用  unlink(2)).   通用的  Unix  相關語義å¯é©ç”¨;
       套接字å¯åœ¨ä»»ä½•時唭R除, è€Œä¸”ç•¶æœ€å¾Œä¸€èŒªçŠæžé¶¶æ´«, 最終會從檔案系統中刪除.

       nå‚³éžæª”案æz符或者信用証明, 你需n發é€/讀å–至少一茼r節.

ERRORS()
       ENOMEM 記憶體溢出.

       ECONNREFUSED
              connect(2)                        調用了一茈æ†b監è½çš„套接字å°è±¡.
              這å¯èƒ½ç™¼ç”Ÿåœ¨é ç¨‹å¥—接字ä¸å­˜åœ¨æˆ–者檔å䏿˜¯å¥—接字的時.

       EINVAL 傳éžäº†ç„¡æ•ˆåƒæ•¸.    通常的產生鴞]是已傳地å€çš„   sun_type   字段的
              AF_UNIX 設置丟失, æˆ–è€…å¥—æŽ¥å­—å°æ‡‰ç”¨çš„æ“ä½œè™•æ–¼ç„¡æ•ˆç‹€æ…‹.

       EOPNOTSUPP
              åœ¨éžæƒ˜Væµçš„å¥—æŽ¥å­—ä¸Šèª¿ç”¨äº†æµæ“作,或者試圖使用出界的數據é¸é ….

       EPROTONOSUPPORT
              傳éžçš„å”è­°æ˜¯éž PF_UNIX çš„.

       ESOCKTNOSUPPORT
              未知的套接字類型.

       EPROTOTYPE
              é ç¨‹å¥—接字與本地套接字類型ä¸åŒ¹é… (SOCK_DGRAM å° SOCK_STREAM).

       EADDRINUSE
              鏿“‡çš„æœ¬åœ°åœ°å€å·²ç¶“佔用,或者檔案系統套接字å°è±¡å·²ç¶“存在.

       EISCONN
              在一茪w經連接的套接字上調用  connect(2)  或者指定的目標地å€åœ¨ä¸€-
              茪w連接的套接字上.

       ENOTCONN
              套接字æ“作需n一茈堛漲aå€,但是套接字尚未連接.

       ECONNRESET
              é ç¨‹å¥—接字æ„外關閉.

       EPIPE  é ç¨‹å¥—接字在一茯y套接字上關閉了.如果激活,æœƒåŒæ™‚發é€ä¸€   SIGPIPE
              標識.這å¯ä»¥é€šéŽå‚³éž   MSG_NOSIGNAL   標識給   sendmsg(2)    或者
              recvmsg(2) 來é¿å….

       EFAULT 使用者記憶體地å€ç„¡æ•ˆ.

       EPERM  發é€è€…在 struct ucred 中傳éžç„¡æ•ˆçš„信用証明.

       當生æˆä¸€èš—仵蚳t統套接字å°è±¡æ™‚,
       å¯èƒ½æœƒç”±é€šç”¨å¥—接層或者檔案系統產生其它錯誤.
       nç²å¾—更多信æ¯,å¯åƒè¦‹åˆé©çš„æ‰‹å†Š.

SEE ALSO()
       recvmsg(2),  sendmsg(2),  socket(2), socket(2), socketpair(2), cmsg(3),
       socket(7)

CREDITS()
       本man陽@者Andi Kleen.

[]
       riser <boomer@ccidnet.com>

[]
       2001/07/19

ã€mä¸ä»åœç˜linuxan:
       http://cmpp.linuxforum.net