【问题标题】:Does Mac/IOS use the same sys/socket.h as the Linux kernel?Mac/IOS 是否使用与 Linux 内核相同的 sys/socket.h?
【发布时间】:2012-06-27 03:53:04
【问题描述】:

我打算将 39dll 库移植到 Linux。这个库已经移植到 Mac 和 IOS,我想知道是否需要重写 sys/socket.h 的东西。您可以找到有问题的库 HERE 和 HERE

有人知道吗?我做了一些谷歌搜索并查看了一些“建议”文章无济于事。一些文章认为它“可能”有效,但我需要一个更明确的答案。

【问题讨论】:

    标签: c++ linux macos sockets


    【解决方案1】:

    你是问Mac OS X 的<sys/socket.h> 的内容是否与Linux 的版本相同?不,Mac OS X 的标头是基于 BSD 的。

    > man socket

    SOCKET(2)                   BSD System Calls Manual                  SOCKET(2)
    
    NAME
         socket -- create an endpoint for communication
    
    SYNOPSIS
         #include <sys/socket.h>
    
         int
         socket(int domain, int type, int protocol);
    
    DESCRIPTION
         Socket() creates an endpoint for communication and returns a descriptor.
    
         The domain parameter specifies a communications domain within which com-
    

    如果您要问两个平台之间是否存在源代码兼容性,那么是的,只要源代码坚持可移植接口即可。

    如果您正在考虑可能需要重写套接字内容的其他原因,我想这取决于您当前的代码在为 OS X 构建时是否满足您的要求。

    【讨论】:

    • 该文本是来自 linux MAN 页面还是来自 OSX?
    • 这很奇怪,因为您在此处显示的 sn-p 几乎是 Linux 中 man 套接字的逐字记录。这是否意味着只要我的代码以这种方式调用套接字,我可能不需要更改两者之间的实现?
    • @nterry 我的回答中的“源代码兼容性”涵盖了这个问题的答案。您了解 POSIX 标准吗?尽管 OS X 和 Linux 是不同的实现,但它们都实现了 POSIX,所以只要你坚持使用 POSIX 接口,它应该可以在两个平台上工作。
    • 是的,我知道 POSIX。我只是确保在实施之前完全理解。
    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多