Chinaunix
标题:
请教各位大大,为什么sendmsg不成功?
[打印本页]
作者:
j123
时间:
2005-02-17 10:14
标题:
请教各位大大,为什么sendmsg不成功?
源代码是这样的:
#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,可以发送一个串,应该不是描述符的问题.
请问各位大大,这是咋回事哩?
作者:
nhw_cs
时间:
2005-02-17 10:24
标题:
请教各位大大,为什么sendmsg不成功?
用perror( )或 strerror( ) 将错误信息打印出来看看
作者:
j123
时间:
2005-02-17 10:39
标题:
请教各位大大,为什么sendmsg不成功?
输出信息是:Bad file number.
作者:
j123
时间:
2005-02-18 11:06
标题:
请教各位大大,为什么sendmsg不成功?
哎!~
作者:
crackpot
时间:
2005-02-18 13:58
标题:
请教各位大大,为什么sendmsg不成功?
GDB以下看是哪一步出错
new=atoi(argv[1]);
这句是干嘛的
作者:
brucelee520
时间:
2005-02-21 00:45
标题:
请教各位大大,为什么sendmsg不成功?
靠
看来我要好好读书啊
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2