Tag: macos

OS X上的Pthread和gcc编译问题

我有一个在Linux上编译好的脚本(Ubuntu 11.04),但在OS X(Lion)上没有。 gcc -pthread -o hw1 hw1.c hw1.c:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘barr’ hw1.c: In function ‘__syncthreads’: hw1.c:53: error: ‘barr’ undeclared (first use in this function) hw1.c:53: error: (Each undeclared identifier is reported only once hw1.c:53: error: for each function it appears in.) hw1.c:54: error: ‘PTHREAD_BARRIER_SERIAL_THREAD’ undeclared (first use […]

在OSX 10.9.5上的libc中的wordexp是否已泄漏?

在OSX wordexp上的wordexp是否已知泄漏内存? 如果没有,我的代码有什么问题? 在我自己的运行OSX 10.10.5的本地机器上,我通过Valgrind运行我的代码并且没有丢失的字节 。 我的Ubuntu Linux机器上也没有泄漏 。 但是,当我在使用OSX 10.9.5的 travis-ci帐户上启用valgrind检查时,我突然从wordexp内部分配的内存中泄漏,即使我使用wordfree释放它,因为手册页描述: ==8968== LEAK SUMMARY: ==8968== definitely lost: 1,024 bytes in 1 blocks ==8968== indirectly lost: 0 bytes in 0 blocks ==8968== possibly lost: 0 bytes in 0 blocks OSX 10.9.5 uname输出: Darwin 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 […]

C中的重音/变音字符?

我刚刚学习了C并得到了一项任务,我们必须将纯文本转换为莫尔斯代码并返回。 (我大部分都熟悉Java,所以请遵守我使用的条款)。 为此,我有一个包含所有字母字符串的数组。 char *letters[] = { “.- “, “-… “, “-.-. “, “-.. “, “.”, “..-.” etc 我写了一个函数来返回所需字母的位置。 int letter_nr(unsigned char c) { return c-97; } 这是有效的,但是分配规范要求处理瑞典语的变形字母åäö。 瑞典语字母与最后用这三个字母的英语相同。 我尝试检查这些,如下: int letter_nr(unsigned char c) { if (c == ‘å’) return 26; if (c == ‘ä’) return 27; if (c == ‘ö’) return 28; return c-97; […]

如何使用Cocoa OSX SDK检查TCP端口

我想制作一个cocoa应用程序,它将检查服务器上是否打开了某些TCP端口。 如果它关闭则返回一个小红球,如果它打开则返回绿色…… 但我有点困惑,使用什么类,等等。 在此先感谢您的帮助

矢量化的strlen逃脱阅读未分配的内存

在研究OSX 10.9.4的strlen实现时,我注意到它总是比较一个16字节的块并向前跳过到后面的16个字节,直到它遇到’\0 ‘。 相关部分: 3de0: 48 83 c7 10 add $0x10,%rdi 3de4: 66 0f ef c0 pxor %xmm0,%xmm0 3de8: 66 0f 74 07 pcmpeqb (%rdi),%xmm0 3dec: 66 0f d7 f0 pmovmskb %xmm0,%esi 3df0: 85 f6 test %esi,%esi 3df2: 74 ec je 3de0 0x10是hex的16字节。 当我看到它时,我想知道:这个记忆也可以不被分配。 如果我分配了一个20字节的C字符串并将其传递给strlen ,它将读取36字节的内存。 为什么允许这样做? 我开始寻找并发现访问数组越界有多危险? 例如,确认它绝对不是一件好事,未分配的内存可能未被映射。 然而,必须有一些东西使这项工作。 我的一些假设: OSX不仅保证其分配是16字节对齐的,而且还保证分配的“量子”是16字节的块。 换句话说,分配5个字节实际上将分配16个字节。 分配20个字节实际上将分配32个字节。 当你编写asm时读取数组的结尾本身并没有坏处,因为它不是未定义的行为,只要它在界限内(在页面内?)。 […]

内存映射库osx的文件名

我需要获取当前应用程序的所有内存映射库的文件名。 目前我正在通过vm_region浏览所有映射的库。 遗憾的是,它没有提供有关当前区域的文件名的信息。 有没有办法在c中获取此信息而无需在vmmap上执行popen?

使用swig和Anaconda Python找不到Python.h

我正在尝试按照本教程编译一个简单的python / C示例: http://www.swig.org/tutorial.html 我在MacOS上使用Anaconda python。 但是,当我跑 gcc -c example.c example_wrap.c -I/Users/myuser/anaconda/include/ 我明白了: example_wrap.c:130:11: fatal error: ‘Python.h’ file not found # include ^ 似乎在一些问题中报告了这个问题: 尝试编译C扩展模块时缺少Python.h. 缺少Python.h,无法找到 Python.h:没有这样的文件或目录 但似乎没有人提供特定于MacOS上的Anaconda的答案 有谁解决了这个?

如何在Mac OS X下用C语言设置文件的创建日期?

Mac OS X存储文件创建时间,我知道如何使用 stat()读取它。 我找不到办法,如何在C中设置创建时间。必须有可能,因为实用工具SetFile可以做到这一点( SetFile是Apple命令行工具包的一部分): SetFile -d ’12/31/1999 23:59:59′ file.txt 我怎么能用C做呢?

如何用kevent()替换select()以获得更高的性能?

来自Kqueue维基百科页面 : Kqueue在内核和用户空间之间提供高效的输入和输出事件管道。 因此,可以修改事件filter以及接收未决事件,同时每个主事件循环迭代仅使用对kevent(2)的单个系统调用。 这与较旧的传统轮询系统调用形成对比,例如poll(2)和select(2)效率较低,尤其是在对大量文件描述符上的事件进行轮询时 这听起来很不错。 我为我的服务器定位FreeBSD,我正在处理大量的网络套接字fd – 在它们上面使用select()并确定从哪里读取数据。 我宁愿使用kevent()调用来获得更高的性能,因为它就是它的用途! 我在这里阅读了关于FreeBSD的kevent的手册页,但它对我来说很神秘,我找不到解释它的好资源。 使用kevent替换select的一个例子可以解决我的问题,也可以帮助我更好地了解如何使用kevent()。

在C中没有“返回”的情况下从键盘获取输入

如何在不按C / Mac Os中的“返回”的情况下从键盘获取输入