Cocoa 通过NSPipe或NSFileHandle将EOF发送到NSTask
我有一个NSTask,它处理从stdin传递的参数。 参数通过Cocoa 通过NSPipe或NSFileHandle将EOF发送到NSTask,cocoa,stdin,eof,nstask,nspipe,Cocoa,Stdin,Eof,Nstask,Nspipe,我有一个NSTask,它处理从stdin传递的参数。 参数通过NSFileHandle传递 它工作正常,但是我们的命令行工具从stdin读取输入,直到它接收到EOF符号(通过按Ctrl+C) 我认为我不能将EOF符号添加到ASCII字符串中,那么选项是什么呢? 任何反馈感谢 提前谢谢 在管道的写入端调用closeFile,表示EOF状态: NSPipe *inPipe = [NSPipe new]; [task setStandardInput:inPipe]; [[inPipe fileHa
NSFileHandle
传递
它工作正常,但是我们的命令行工具从stdin读取输入,直到它接收到EOF符号(通过按Ctrl+C)
我认为我不能将EOF符号添加到ASCII字符串中,那么选项是什么呢?
任何反馈感谢
提前谢谢 在管道的写入端调用
closeFile
,表示EOF状态:
NSPipe *inPipe = [NSPipe new];
[task setStandardInput:inPipe];
[[inPipe fileHandleForWriting] writeData:...];
// ...
[[inPipe fileHandleForWriting] closeFile];
在管道的写入端调用
closeFile
,表示EOF状态:
NSPipe *inPipe = [NSPipe new];
[task setStandardInput:inPipe];
[[inPipe fileHandleForWriting] writeData:...];
// ...
[[inPipe fileHandleForWriting] closeFile];
Ctrl-c不是EOF;是SIGINT(中断)。此外,EOF不是一个角色;这是文件的结尾。所以,要“发送EOF”,您只需结束文件。@PeterHosey从技术上讲,确实有一个由ASCII定义的EOF字符,它一直在使用中。但无可否认,在Mac电脑上,将该字符发送到文件中不会有任何帮助。啊,是的,传输结束字符也被称为Ctrl-D。Ctrl-c不是EOF;是SIGINT(中断)。此外,EOF不是一个角色;这是文件的结尾。所以,要“发送EOF”,您只需结束文件。@PeterHosey从技术上讲,确实有一个由ASCII定义的EOF字符,它一直在使用中。但无可否认,在Mac电脑上,将该字符发送到文件中不会有任何帮助。啊,是的,传输结束字符也被称为Ctrl-D。