Module: FreeBSD
Overview
:nodoc:
Constant Summary collapse
- INT_SIZE =
[0].pack("i_").size
- INT32_SIZE =
4
- SHORT_SIZE =
[0].pack("s_").size
- CMGROUP_MAX =
16
- ALIGNBYTES =
[0].pack("L_").size - 1
Instance Method Summary collapse
Instance Method Details
#sendmsg(fd, buf) ⇒ Object
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/watchcat.rb', line 212 def sendmsg(fd, buf) iov = [buf, buf.length].pack("pL_") cmsg_space = cmsg_space(CMSGCRED_SIZE) cmsg_data_len = cmsg_space - INT32_SIZE - 2*INT_SIZE cmsghdr = ([ cmsg_len(CMSGCRED_SIZE), # cmsg_len SOL_SOCKET, # cmsg_level SCM_CREDS # cmsg_type ] + [0] * cmsg_data_len).pack("I_i_i_C#{cmsg_data_len}") msg_control_ptr = pointer(cmsghdr) msg_controllen = cmsg_space msghdr = [ 0, # msg_name 0, # msg_namelen pointer(iov), # msg_iov 1, # msg_iovlen pointer(cmsghdr), # msg_control cmsg_space, # msg_controllen 0 # msg_flags ].pack("L_L_L_L_L_L_L_") syscall(SYS_SENDMSG, fd.fileno, pointer(msghdr), 0) end |