QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 704|回复: 3

libc文档里面这个程序偶怎么都通不过~~

[复制链接]
发表于 2005-2-19 16:27:07 | 显示全部楼层 |阅读模式

[code:1]
//--------------------------------------------------------------
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/un.h>

static char filename[] = {"/home/mryx/testsock/data"};

int main(int argc, char *argv[])
{
  int sock;
  struct sockaddr_un name;
  size_t size;

  sock = socket(PF_UNIX, SOCK_DGRAM, 0);
  if(sock < 0){
    printf("\tExit , errno = %d\n", errno);
    exit(-1);
  }
  name.sun_family = AF_FILE;
  strcpy(name.sun_path, filename);

  size = (offsetof(struct sockaddr_un, sun_path) + strlen(name.sun_path)+1);
  if(bind(sock, (struct sockaddr*)&name, size) < 0){
    printf("\tExit, errno = %d\n", errno);   
    shutdown(sock, 0);   
    exit(-1);
  }
  shutdown(sock, 0);
  return 0;
}
//---------------------------------------------------------
[/code:1]

运行之后,
    Exit, errno = 98
这个程序几乎就是libc文档的原样阿。。。怎么通不过阿。。。 [/code]
发表于 2005-2-19 16:57:19 | 显示全部楼层
在bind后加一个perror("Error Message:");
看看是什么出错信息。
回复

使用道具 举报

 楼主| 发表于 2005-2-19 17:03:29 | 显示全部楼层
在asm/errno.h查看,98是EADDRINUSE,刚刚建立的一个文件。。。。偶没打开阿。。。 呜呜~~
回复

使用道具 举报

发表于 2005-2-19 22:06:23 | 显示全部楼层
在bind之前unlink(filename)一下。如果filename已存在,bind会出错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 15:34 , Processed in 0.046704 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表