- 论坛徽章:
- 0
|
源代码是这样的:
- #define CLEN sizeof(struct cmsghdr)+sizeof(int)
- union
- {
- struct cmsghdr cm;
- char control[CLEN];
- }un;
- int main(int argc,char **argv)
- {
- int fd,new;
- struct msghdr msg;
- struct cmsghdr *cmsg;
- struct iovec iov[1];
- char *ptr,c;
- if(argc!=2)
- {
- printf("filename <sockfd#>;\n");
- exit((errno>;0)?errno:255);
- }
- if((fd=open("/ellen/src/t.c",O_RDWR))<0)
- {
- printf("open file error\n");
- exit((errno>;0)?errno:255);
- }
- new=atoi(argv[1]);
- printf("%d\n",new);
- msg.msg_control=un.control;
- msg.msg_controllen=CLEN;
- cmsg=CMSG_FIRSTHDR(&msg);
- cmsg->;cmsg_len=CLEN;
- cmsg->;cmsg_level=SOL_SOCKET;
- cmsg->;cmsg_type=SCM_RIGHTS;
- *((int *)CMSG_DATA(cmsg))=fd;
- msg.msg_name=NULL;
- msg.msg_namelen=0;
- ptr="";
- iov[0].iov_base=ptr;
- iov[0].iov_len=1;
- msg.msg_iov=iov;
- msg.msg_iovlen=1;
- if(sendmsg(new,(struct msghdr *)&msg,0)==-1)
- {
- printf("sendmsg error\n");
- exit((errno>;0)?errno:255);
- }
- close(fd);
- exit(0);
- }
复制代码
我把sendmsg改成write,可以发送一个串,应该不是描述符的问题.
请问各位大大,这是咋回事哩? |
|