SO_PEERCRED отсутствует в ruby-1.8.7? - PullRequest
1 голос
/ 22 февраля 2012

Не уверен, как вы восстанавливаете одноранговый идентификатор процесса, подключающегося к сокету UNIX в ruby.Я проверил и не уверен, где определяется SO_PEERCRED.Я использую ruby-1.8.7

Socket.constants.sort => ["AF_APPLETALK", "AF_CCITT", "AF_CHAOS", "AF_CNT", "AF_COIP", "AF_DATAKIT"," AF_DLI "," AF_E164 "," AF_ECMA "," AF_HYLINK "," AF_IMPLINK "," AF_INET "," AF_INET6 "," AF_IPX "," AF_ISDN "," AF_ISO "," AF_LAT "," AF_LINK "," AF_LINK ",«AF_LOCAL», «AF_MAX», «AF_NATM», «AF_NDRV», «AF_NETBIOS», «AF_NS», «AF_OSI», «AF_PPP», «AF_PUP», «AF_ROUTE», «AF_SIP», «AF_SNA», «AF_SY»"," AF_UNIX "," AF_UNSPEC "," AI_ADDRCONFIG "," AI_ALL "," AI_CANONNAME "," AI_DEFAULT "," AI_MASK "," AI_NUMERICHOST "," AI_PASSIVE "," AI_V4MAPPED "," AI_VPAP ", AI_VPAP«СОЗДАТЬ», «Константы», «EAI_ADDRFAMILY», «EAI_AGAIN», «EAI_BADFLAGS», «EAI_BADHINTS», «EAI_FAIL», «EAI_FAMILY», «EAI_MAX», «EAI_MEMORY, EAI_IRO», EAA_NI_OD"," EAI_SERVICE "," EAI_SOCKTYPE "," EAI_SYSTEM "," EXCL "," Перечислитель "," FNM_CASEFOLD "," FNM_DOTMATCH "," FNM_NOESCAPE "," FNM_PATHNAME, INDR "INS", "FDR" ", FDRM_S""INADDR_BROADCAST", "INADDR_LOOPBACK", "INADDR_MAX_LOCAL_GROUP "," INADDR_NONE "," INADDR_UNSPEC_GROUP "," IPPORT_RESERVED "," IPPORT_USERRESERVED "," IPPROTO_EGP "," IPPROTO_EON ", IPPROTO, IPPROTO, IPO" IPO ", IPO" IPO ", IPO" IPO ", IPO" IPO ", IPO" IPO ", IPO" IPO ", IPO" IPO ", IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO "IPO" IPO_ROPT "IPPRO_MAX_LOCAL_GROUP" ", "IPPROTO_MAX", "IPPROTO_ND", "IPPROTO_PUP", "IPPROTO_RAW", "IPPROTO_TCP", "IPPROTO_TP", "IPPROTO_UDP", "IPPROTO_XTP", "IP_ADD_MEMBERSHIP", "IP_DEFAULT_MULTICAST_LOOP", "IP_DEFAULT_MULTICAST_TTL", "IP_DROP_MEMBERSHIP", "IP_HDRINCL "," IP_MAX_MEMBERSHIPS "," IP_MULTICAST_IF "," IP_MULTICAST_LOOP "," IP_MULTICAST_TTL "," IP_OPTIONS "," IP_RECVDSTADDR "," IP_RECVOPTS ", IP_RETS" IP_RT "LTS" "LR" "LR" "LR" "LR" "LR" "LR" "LR, "LOCK_NB", "LOCK_SH", "LOCK_UN", "MSG_CTRUNC", "MSG_DONTROUTE", "MSG_DONTWAIT", "MSG_EOF", "MSG_EOR", "MSG_FLUSH", "MSG_HAVEMORE_", "MSG__", "MSG_", MSGMSG_PEEK "," MSG_RCVMORE "," MSG_SEND "," MSG_TRUNC "," MSG_WAITALL "," NI_DGRAM "," NI_MAXHOST "," NI_MAXSERV "," NI_NAMEREQD ", NI_NERI, NI_NI", "NI_NONI", NI_NO "NI" NI "NI" NI "NIC", "НЕБЛОК", "ПФ"_APPLETALK "," PF_CCITT "," PF_CHAOS "," PF_CNT "," PF_COIP "," PF_DATAKIT "," PF_DLI "," PF_ECMA "," PF_HYLINK "," PF_IMPLINK "," PF "," PF__PIN ", PF_ISDN, PF_ISO, PF_KEY, PF_LAT, PF_LINK, PF_LOCAL, PF_MAX, PF_NATM, PF_NDRV, PF_NETBIOS, PF_NS, PF_NS, PF_NSPF_PIP »,« PF_PPP »,« PF_PUP »,« PF_ROUTE »,« PF_RTIP »,« PF_SIP »,« PF_SNA »,« PF_SYSTEM »,« PF_UNIX »,« PF_UNSPEC »,« PF_XTPR »,« RD »,« RD », "SEEK_CUR", "SEEK_END", "SEEK_SET", "SHUT_RD", "SHUT_RDWR", "SHUT_WR", "SOCK_DGRAM", "SOCK_RAW", "SOCK_RDM", "SOCK_SEQPACKET", "SOCK_STREAM", "SOCK_STREAM", "SOCK_STREAM" ",SO_ACCEPTCONN "," SO_BROADCAST "," SO_DEBUG "," SO_DONTROUTE "," SO_DONTTRUNC "," SO_ERROR "," SO_KEEPALIVE "," SO_LINGER "," SO_NKE "," SO_NOSIGPIPE ", SO_NOOF," SO_NOSIGPIPE "," SO_N "," "SO_NOB, «SO_RCVLOWAT», «SO_RCVTIMEO», «SO_REUSEADDR», «SO_REUSEPORT», «SO_SNDBUF», «SO_SNDLOWAT», «SO_SNDTIMEO», «SO_TIMESTAMP», «SO_TYW, SO_FW», SO_FB «SO_» »« SO_MB »SYNC "," TCP_MAXSEG "," TCP_NODELAY "," TRUNC "," WRONLY "]

1 Ответ

0 голосов
/ 05 апреля 2012

На какой ОС вы работаете? SO_PEERCRED только для Linux и определяется только в Ruby, если он существует на платформе .

Сравнить:

$ uname
Linux
$ ruby -e "require 'socket'; puts Socket.constants.include? :SO_PEERCRED"
true

и

$ uname
Darwin
$ ruby -e "require 'socket'; puts Socket.constants.include? :SO_PEERCRED"
false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...