我需要在两个应用程序之间进行高性能通信。我试过AppleEvent,但这不是一个好选择。我想使用命名管道,但我不知道如何在COCOA中使用它们。
提前感谢您的帮助:)
答案 0 :(得分:6)
在Cocoa中没有特殊的方法。你基本上创建了fifo,一旦你拥有了它,你的进程就可以使用标准的Cocoa包装器(如NSFileHandle
)读取/写入它。您可以使用NSFileManager
或其他任何方式检查其存在,但您仍需要在某个时刻调用mkfifo(2)
来创建命名管道。
所以:
if( mkfifo("/tmp/my_named_pipe", 0644) == -1 ) {
// some error handling
abort();
}
// Open and use the fifo as you would any file in Cocoa, but remember that it's a FIFO
NSFileHandle* fifoIN = [NSFileHandle fileForReadingAtPath:@"/tmp/my_named_pipe"];
就个人而言,我建议使用BSD或Unix套接字。有很多框架支持套接字,有时双向通道也更有用,你不必担心读者或作者是否已经准备就绪。
答案 1 :(得分:2)
命名管道还有其他选择: