Cocoa 通过NSPipe或NSFileHandle将EOF发送到NSTask

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

我有一个NSTask,它处理从stdin传递的参数。 参数通过
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。