访问命名管道以进行读写

时间:2017-05-17 16:58:32

标签: objective-c macos cocoa file-io nsfilehandle

我正在尝试创建一个可以创建,编写和读取命名管道的简单工具。这是代码。

decltype(placeholder.fct(1, 2, 3))

使用perms of正确创建文件 prw-rw-rw- 1 xxx wheel 0 May 17 09:48 myPipe |

当我运行该工具时,它会挂在以下行:

int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        //create pipe
        system("rm /tmp/myPipe");
        system("mkfifo /tmp/myPipe");
        system("chmod 666 /tmp/myPipe");

        // write to pipe
        NSString *text = [NSString stringWithFormat:@"this is a test"];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        if ([fileManager fileExistsAtPath:@"/tmp/myPipe" isDirectory:NO])
        {
            NSFileHandle *fileHandle=[NSFileHandle fileHandleForWritingAtPath:@"/tmp/myPipe"];
            [fileHandle seekToEndOfFile];
            [fileHandle writeData:[text dataUsingEncoding:NSUTF8StringEncoding]];
            [fileHandle closeFile];

        }
    }
    return 0;
}

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

除了我完全不了解代码的作用外,没有什么是错的。没有"挂"只是等待管道中外部消息的代码。

我只需要启动终端并输入

echo "foo" > /tmp/myPipe

感谢所有协助的人......