gpt4 book ai didi

c - 哪种计算 sockaddr_un 结构大小的方法是正确的?

转载 作者:行者123 更新时间:2023-12-03 12:07:56 30 4
gpt4 key购买 nike

unix域套接字地址结构定义为:

struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[108]; /* pathname */
};

我看到了两种计算大小的方法,稍后将其传递给 bind
  • 来自 APUE 和 http://beej.us/guide/bgipc/html/multi/unixsock.html
  • //beej's guide
    struct sockaddr_un local;
    int len;

    len = strlen(local.sun_path) + sizeof(local.sun_family);
    bind(s, (struct sockaddr *)&local, len);

    //APUE
    struct sockaddr_un un;
    size = offsetof(struct sockaddr_un, sun_path) + strlen(un.sun_path);
    bind(fd, (struct sockaddr *)&un, size)
  • Linux 编程接口(interface)
  • const char *SOCKNAME = "/tmp/mysock";
    struct sockaddr_un addr;
    addr.sun_family = AF_UNIX; /* UNIX domain address */
    strncpy(addr.sun_path, SOCKNAME, sizeof(addr.sun_path) - 1);
    bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_un))

    哪种方式是正确的? (也许两者都是正确的?)

    最佳答案

    正确的方法是使用sizeof (struct sockaddr_un)实际上。

    关于c - 哪种计算 sockaddr_un 结构大小的方法是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443704/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com