【发布时间】:2018-01-08 15:10:27
【问题描述】:
我正在使用llvm::MemoryBuffer::getFileOrSTDIN("-"),根据specification,它应该将指定的文件作为MemoryBuffer打开,如果文件名是“-”则打开stdin em>。
现在,在以下上下文中:
auto Source = llvm::MemoryBuffer::getFileOrSTDIN(File);
if (std::error_code err = Source.getError()) {
llvm::errs() << err.message();
} else{
someFunction(std::move(*Source), File, makeOutputWriter(Format, llvm::outs()),
IdentifiersOnly, DumpAST);
}
它在第一行阻塞(当File == "-"时);正如预期的那样,STDIN 永远不会关闭。
当一个特殊的*char 出现在 STDIN 中时,比如说<END_CHAR>,我知道我已经完成了给定任务的阅读。在这种情况下,我如何关闭 STDIN 并转到 someFunction ?
谢谢,
【问题讨论】:
标签: c++ llvm llvm-clang