问题标签 [darwin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - 为什么我的 shell 脚本在第二次尝试时失败?
这个脚本应该接受一组搜索词并返回一个格式化的 URL 来搜索 google。
这样做很好,所以我决定添加一个选项来搜索特定站点,或者忽略该站点,使用-s
or-S
标志。
这在您第一次运行脚本时有效,但在随后的每次尝试中都会失败。
打开一个新的终端窗口或重新启动终端都可以清除此问题并允许在失败前再尝试一次。
剧本:
需要进行哪些更改才能使此脚本更可靠?
gcc - -shared 和 -bundle gcc 标志有什么区别
我有一个名为 abc 的小型 C 程序,它在内部使用 dlopen 来动态加载和运行共享库 libabc。libabc 声明了一个在运行时动态加载和调用的函数 greeting。当我使用以下两种方法编译和运行时,结果是一样的。创建共享对象 (.so) C 库时,GCC 编译器上的 -shared 和 -bundle 标志有什么区别?
方法一
方法二
使用达尔文 gcc 4.2
c - Mac OS X - 为什么 netstat 给出错误“得到 %d 两次”?
我试图弄清楚为什么netstat
在我的 Mac OS X 计算机上打印“两次获得 4”之类的东西。
例如:
该消息由 netstat 的inet.c打印,在该函数protopr
中基本上执行以下操作:
- 调用
sysctlbyname(3)
使用例如net.inet.tcp.pcblist_n
获取多氯联苯列表(我猜?) - 循环遍历结果,收集指向各种结构的指针,其类型称为
xgn_kind
xgn_kind
它为它看到的每一个设置一个位。如果它两次看到它们中的任何一个,它就会抱怨消息"got %d twice"
。
我已经删除了代码的相关部分:
我的问题是,最后:
为什么会这样?是不是从那里传回了错误的数据sysctl
?上面的循环是否不正确,即sysctl
每种类型实际上可以返回多个结构?
请注意,我运行的是 Mac OS X —— 代码确实与FreeBSD 的.
boost - Boost.Wave 1.52 不在 Darwin 上使用 clang++ 构建
我已经应用Compile boost C++11 clang mac 找不到 cstddef
并调用 build 如下
./b2 variant=debug,release --layout=versioned toolset=clang cxxflags="-fPIC -std=c++11 -stdlib=libc++ -arch i386 -arch x86_64" linkflags="-stdlib=libc++ -arch i386 -arch x86_64" threading=multi link=shared --stagedir=stage_darwin_intel_shared_mt stage
一切都建立起来了,除了警告日志和 Boost.Wave 失败: http ://pastebin.com/ZHkmTWaq
PS 静态风格的助推器可以很好地构建 Wave。
xcode - OS X 上的无代码 kext
好的,我正在开发一个 uController 项目(指针设备),我正在尝试编写用户空间驱动程序IOkit.framework
。
使用 idProduct 和 idVendor 我可以得到IOUSBInterfaceInterface300
obj
问题是当我尝试
kr = (*intf)->USBInterfaceOpen(intf);
它失败了kIOReturnExclusiveAccess
,很可能是因为HID
经理已经打开了具有独占访问权限的设备。
这里说无代码的 kext 可以防止 HID 管理器接管设备
idVendor
我用and创建了一个 kextidProduct
并使用 kextload 来加载它。我从 kextload取回“加载成功”
但不知何故我仍然无法打开界面?难道我做错了什么?
我通过创建一个文件名 Info.plist (内容与调整了 idProduct 和 idVendor 的帖子相同)来创建 kext,并将其放在名为 MyUSBDeviceTest.kext 的文件夹中
然后将所有者更改为 root:wheel 然后将 kext 复制到/System/Library/Extensions
then
我已尝试重新启动并重新连接设备,但我无法从HID
系统中获取接口
c - wcscoll函数,被标记为中毒了,怎么办?
在 Mac Os X 10.6.8 上,在解决此问题之前,我无法使用标准库中的 wchar_t 函数编译代码。
wcscoll 函数以及其他一些函数:
inttypes.h :#pragma GCC 毒 wcstoimax wcstoumax stdlib.h :#pragma GCC 毒 mbstowcs mbtowc wcstombs wctomb wchar.h :#pragma GCC 毒 fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs >mbsrtowcs putwc putwchar swprintfscanf >swvwf vsvprintfscanf vprint wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat >wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr >wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth >wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf
我该如何解决这个问题?我有点不愿意弄乱标准库。但我想我也许可以编译 GNU C 库,如果 Apple 没有修复它?或者在处理宽字符(Utf-8)的库中是否有任何其他合适的替代方案。
我正在移植一些古老的东西,所以我真的需要使用 ncurses,为了使用 ncurses,我需要宽字符!:)
编辑:据我所知,标准的包含路径应该是 /usr/include。我已经浏览了我拥有的 SDK 的包含目录,并且通过头文件的 grep 显示了相同的毒编译指示,来自http://opensource.apple.com/tarballs/Libc/的最新 tarball 也是如此
编辑++
事后看来,这些编译指示的存在是有原因的,我一直在寻找替代方案,所以现在,我正在尝试构建刚刚下载的 glibc,并且我检查了没有任何“GCC 毒”编译指示的标头。
在 glibc 的配置文件中阅读了一下,我想这不是一个简单的选择。我想我必须剖析一些适用于 utf-8 并在 mac osX 上使用 ncurses 的东西来弄清楚如何。
可能是我忽略了一个简单的解决方案。但是 ncurses 依赖于 7 位 ascii,这是我的问题。我的目标是在使用 ncurses 时呈现 utf-8 语言特定的字符。我需要能够排序,因为格式是带有索引的“专有”,分叉出系统调用来排序记录是没有选择的。我还需要能够知道某种字符串中有多少个代码点,用于使用 ncurses 从显示器中进行字段编辑、插入和删除字符。
谢谢!
macos - 如何在 OS X 中安装缺少的代码页(charmap)
我错过了系统 (IBM-1146) 上的某个代码页,需要安装它。但我找不到怎么做。谷歌对此非常沉默。
我知道它丢失了,因为 iconv 抱怨:
iconv: conversion from IBM-1146 unsupported
并iconv -l
确认没有安装charmap。一些研究暗示我可以使用它来安装它,localedef
但我在网上的任何地方都找不到相应的charmap文件。
非常感谢任何帮助。
linux - 在 OS X / iOS 中的 mmap 后文件更改
如果在我使用mmap
和 flag对文件进行内存映射后MAP_PRIVATE
,我在同一进程中对底层文件进行了更改,会发生什么情况?mmap
记忆会接受变化吗?
在 Linux 中,手册页说:
MAP_PRIVATE:创建私有写时复制映射。映射的更新对映射同一文件的其他进程不可见,并且不会传递到基础文件。未指定在 mmap() 调用之后对文件所做的更改是否在映射区域中可见。
所以在 Linux 中,答案是“未指定”。
但是在 Mac OS X 中它只说:
MAP_PRIVATE:修改是私有的(写时复制)。
我做了一个快速示例工具,似乎表明进行更改不会影响私有映射。但没有其他证据证明这一点。
macos - 为什么 host_statistics64() 返回不一致的结果?
为什么 OS X 10.6.8 中的 host_statistics64() (我不知道其他版本是否有这个问题)返回的免费、活动、非活动和有线内存的计数加起来不等于 ram 的总量?为什么它缺少不一致的页数?
以下输出表示十秒内未分类为空闲、活动、非活动或有线的页面数(大约每秒采样一次)。
产生上述数字的代码是:
macos - 限制 OSX /Darwin 中单个进程的内存使用
我正在尝试修改一些 JNI 代码以限制进程可以消耗的内存量。这是我用来在 linux 和 osx 上测试 setRlimit 的代码。在 linux 中,它按预期工作,并且 buf 为空。
此代码将限制设置为 32 MB,然后尝试分配 64 MB 缓冲区,如果缓冲区为空,则 setrlimit 有效。
在 linux 机器上这是我的结果
在 osx 10.8 上
我的问题是,如果这在 osx 上不起作用,是否有办法在 darwin 内核中完成这项任务。手册页似乎都说它会起作用,但似乎没有这样做。我已经看到 launchctl 对限制内存有一些支持,但我的目标是在代码中添加这种能力。我也尝试使用 ulimit ,但这也不起作用,我很确定 ulimit 使用 setrlimit 来设置限制。当超过 setrlimit soft 或 hardlimit 时,我还能捕捉到信号吗?我一直找不到。
如果它也可以在 Windows 中完成,则可以加分。
感谢您的任何建议
更新
正如指出的那样,RLIMIT_AS 在手册页中明确定义,但被定义为 RLIMIT_RSS,因此如果参考文档,RLIMIT_RSS 和 RLIMIT_AS 在 OSX 上是可互换的。
osx 10.8 上的 /usr/include/sys/resource.h
测试了特洛伊木马对使用此处描述的 RLIMIT_DATA 的极好建议
linux 和 osx 的结果是一样的,那就是 malloc 对两者都是成功的。