Нет особого способа сделать это в Какао. Вы в основном сделали бы 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. Существует много поддержки Framework для сокетов, иногда двунаправленный канал также более полезен, и вам не придется беспокоиться о том, готов ли читатель или писатель сначала.