gpt4 book ai didi

c++ - 如何在读取 STDIN 时获取 llvm::MemoryBuffer 的内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:41:55 27 4
gpt4 key购买 nike

我正在使用 llvm::MemoryBuffer::getFileOrSTDIN("-")并且,根据 specification ,它应该将指定的文件作为 MemoryBuffer 打开,或者如果文件名是“-”则打开标准输入

现在,在以下上下文中:

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

谢谢,

最佳答案

您始终可以使用 close 关闭 stdin 文件描述符,即 close(0)。如果你检查 llvm::MemoryBuffer的来源,你会看到 getFileOrSTDIN() 基本上可以归结为使用第一个参数(文件描述符)调用 llvm::MemoryBuffer::getMemoryBufferForStream() ) 设置为 0。

另请参阅 this所以回答。

关闭标准输入的特殊字符是命令行上的ctrl-d(至少在*nix 中)(看看here)。

关于c++ - 如何在读取 STDIN 时获取 llvm::MemoryBuffer 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com