首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift5上在macOS上使用libbsm/openbsm?

如何在Swift5上在macOS上使用libbsm/openbsm?
EN

Stack Overflow用户
提问于 2020-05-09 02:59:46
回答 1查看 174关注 0票数 1

我尝试在Swift5中使用libbsm/openbsm库和Xcode11。

为什么?我不能很好的AUDITPIPE_SET_PRESELECT_MODE

我可以在Swift中使用libbsm/openbsm吗?

代码语言:javascript
复制
var mode = AUDITPIPE_PRESELECT_MODE_LOCAL // <- works very well
if ioctl(auditFD, AUDITPIPE_SET_PRESELECT_MODE, &mode) == -1 {
    return -1
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 22:45:21

我遇到了同样的问题,Swift无法导入这些复杂的宏。奎因“爱斯基摩人”指示我将它们声明为c常量。所以我在我的项目中的一个c文件中创建了它们。

在.h文件中,我执行了以下操作:

代码语言:javascript
复制
#include <stdio.h>
#include <bsm/libbsm.h>
#include <sys/ioctl.h>
#include <security/audit/audit_ioctl.h>


// -- Macros used for creating an auditpipe
extern unsigned long QAUDITPIPE_SET_PRESELECT_MODE;
extern unsigned long QAUDITPIPE_GET_QLIMIT_MAX;
extern unsigned long QAUDITPIPE_SET_QLIMIT;
extern unsigned long QAUDITPIPE_SET_PRESELECT_FLAGS;
extern unsigned long QAUDITPIPE_SET_PRESELECT_NAFLAGS;
// -- End auditpipe macros

在我的.c文件中,我有:

代码语言:javascript
复制
unsigned long QAUDITPIPE_SET_PRESELECT_MODE = AUDITPIPE_SET_PRESELECT_MODE;
unsigned long QAUDITPIPE_GET_QLIMIT_MAX = AUDITPIPE_GET_QLIMIT_MAX;
unsigned long QAUDITPIPE_SET_QLIMIT = AUDITPIPE_SET_QLIMIT;
unsigned long QAUDITPIPE_SET_PRESELECT_FLAGS = AUDITPIPE_SET_PRESELECT_FLAGS;
unsigned long QAUDITPIPE_SET_PRESELECT_NAFLAGS = AUDITPIPE_SET_PRESELECT_NAFLAGS;

所以现在我可以在我的Swift代码中使用QAUDITPIPE_SET_PRESELECT_MODE了。效果很好!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61691221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档