gpt4 book ai didi

c - 有效的 C 代码在 Swift 项目中不起作用

转载 作者:行者123 更新时间:2023-11-30 11:46:37 26 4
gpt4 key购买 nike

我有代码:

#define SOCK_PATH "/Users/piotr/swigo.sock"

int ux_server_socket() {
const int fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd == -1) {
printf("%s\n", strerror(errno));
return -1;
}
struct sockaddr_un addr;
bzero(&addr, sizeof(addr));
addr.sun_len = sizeof(addr);
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, SOCK_PATH);

if (unlink(addr.sun_path) == -1) {
printf("unlink: %s\n", strerror(errno));
}

int retv = bind(fd, (struct sockaddr*)&addr, (socklen_t)SUN_LEN(&addr));
if (retv == -1) {
printf("bind: %s\n", strerror(errno));
return -1;
}

printf("valid socket: %d\n", fd);
return fd;
}

当我在 Xcode 中用 C 语言创建项目时,这段代码工作没有任何问题(在控制台中出现:有效套接字:3)。但是,当我在 Swift(Cocoa App)中创建一个项目时,我使用此函数向项目添加了一个 C 文件(以及相应的文件 h 和桥头文件),但有些东西不起作用。我在控制台中看到消息:

unlink: Operation not permitted
bind: Address already in use

为什么这个有效的 C 代码在 Swift 项目中不起作用 - 有什么想法吗?

最佳答案

这是沙箱的问题,有效的解决方案是 Ken Thomases 在另一个任务中的想法,我需要设置两个复选框(应用程序沙箱,网络:传入连接(服务器)和传出连接(客户端)):

screenshot of settings

参见:Creating and binding socket on Mac OS Hight Sierra

关于c - 有效的 C 代码在 Swift 项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756813/

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