【发布时间】:2018-01-10 12:28:00
【问题描述】:
我有一段代码(见下文)从作为命令行参数给出的文件中读取数据。我想添加对能够从管道读取输入的支持。例如,当前版本将数据读取为main <file_name>,而在cmd1 | main 行也应该可以做一些事情。这是从文件中读取数据的来源:
procedure main is
File : Ada.Text_IO.File_Type;
begin
if Ada.Command_Line.Argument_Count /= 1 then
return;
else
Ada.Text_IO.Open (
File => File,
Mode => In_File,
Name => Ada.Command_Line.Argument (1));
while (not Ada.Text_IO.End_Of_File (File)) loop
-- Read line using Ada.Text_IO.Get_Line
-- Process the line
end loop;
Ada.Text_IO.Close (File);
end main;
如果我理解正确,管道只是 Ada 中的一种非常规文件类型。但是我该如何处理呢?
【问题讨论】:
-
有点不清楚你在问什么,但如果你想访问标准 i/O 管道
stdin, stdout, stderr,请查看Ada.Text_IO.Standard_Output等文件(同上 Stream_IO 等),例如ada.tips/redirecting-text_io-output-to-a-file.html -
我要问的是如何使程序既支持从作为命令行参数提供的文件中读取(已经完成),又在这种使用的情况下从管道中读取输入.你的意思是管道只是一个
stdin?