write_fd.c
来自「Unix网络编程 基于Socket的网络编程」· C语言 代码 · 共 52 行
C
52 行
/* include write_fd */#include "unp.h"ssize_twrite_fd(int fd, void *ptr, size_t nbytes, int sendfd){ struct msghdr msg; struct iovec iov[1];#ifdef HAVE_MSGHDR_MSG_CONTROL union { struct cmsghdr cm; char control[CMSG_SPACE(sizeof(int))]; } control_un; struct cmsghdr *cmptr; msg.msg_control = control_un.control; msg.msg_controllen = sizeof(control_un.control); cmptr = CMSG_FIRSTHDR(&msg); cmptr->cmsg_len = CMSG_LEN(sizeof(int)); cmptr->cmsg_level = SOL_SOCKET; cmptr->cmsg_type = SCM_RIGHTS; *((int *) CMSG_DATA(cmptr)) = sendfd;#else msg.msg_accrights = (caddr_t) &sendfd; msg.msg_accrightslen = sizeof(int);#endif msg.msg_name = NULL; msg.msg_namelen = 0; iov[0].iov_base = ptr; iov[0].iov_len = nbytes; msg.msg_iov = iov; msg.msg_iovlen = 1; return(sendmsg(fd, &msg, 0));}/* end write_fd */ssize_tWrite_fd(int fd, void *ptr, size_t nbytes, int sendfd){ ssize_t n; if ( (n = write_fd(fd, ptr, nbytes, sendfd)) < 0) err_sys("write_fd error"); return(n);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?