我希望利用Mac OS X上的CFStream,能够异步读取/写入作为串行通信设备的文件描述符。我需要访问文件描述符,以便通过ioctl控制和更改设备设置。
虽然在使用面向套接字的流操作时,似乎可以访问本机套接字fd,但我还没有看到任何方法可以使用CFCreateXxxStreamWithFile API打开文件,然后获取文件描述符(即使这样,我也确实需要来自同一个fd的一对,这样我就可以设置读/写选项)或从现有文件描述符创建CFStream。
有没有办法,或者有没有图书馆允许这样做(类似于AyncCococaSocket)?还是我只能做我自己的线程操作和/或GCD(这会将我自己限制在10.6及以上)?
谢谢你的帮助!
您可以使用kCFStreamPropertySocketNativeHandle
通过属性getter CFReadStreamCopyProperty
或CFWriteStreamCopyProperty
访问CFStream的文件描述符。对于读写流对,得到的描述符应该是相同的。