我使用mkfifo /tmp/my.fifo
创建了一个文件。我现在想将chars写入文件(使用Objective C),以便能够通过tail -f /tmp/my.fifo
获取它们。
出于某种原因,这不起作用。 tail命令只显示一个字符,然后停止输出。
目标C代码:
NSError *error = nil;
[buffer writeToFile:@"/tmp/my.fifo" atomically:YES encoding:NSUTF8StringEncoding error:&error];
if(error){
NSLog(@"Fail: %@",[error localizedDescription]);
}
NSLog不输出任何内容。所以从Objective C的角度来看,显然没有错误。
答案 0 :(得分:2)
解决方案比我想象的简单:
NSFileHandle *fileHandle=[NSFileHandle fileHandleForWritingAtPath:@"/tmp/my.fifo"];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[buffer dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];