问题标签 [stdin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
34541 浏览

ruby - 持续从 Ruby 中外部进程的 STDOUT 读取

我想通过ruby脚本从命令行运行blender,然后它将逐行处理blender给出的输出以更新GUI中的进度条。搅拌机是我需要阅读其标准输出的外部进程并不重要。

当搅拌机进程仍在运行时,我似乎无法捕捉到搅拌机通常打印到外壳的进度消息,我尝试了几种方法。在搅拌机退出后,我似乎总是访问搅拌机的标准输出,而不是在它仍在运行时。

这是一个失败的尝试示例。它确实获取并打印了搅拌机输出的前 25 行,但只有在搅拌机进程退出后:

编辑:

为了让它更清楚一点,调用 blender 的命令会在 shell 中返回一个输出流,指示进度(第 1-16 部分已完成等)。似乎在搅拌机退出之前,任何对“获取”输出的调用都会被阻止。问题是如何在搅拌机仍在运行时访问此输出,因为搅拌机将其输出打印到外壳。

0 投票
3 回答
7854 浏览

unix - 如何创建用于读取输出和写入输入的伪 tty

我正在使用 fork() 和 execvp() 来生成一个必须相信它已连接到交互式终端才能正常运行的进程。

一旦产生,我想捕获进程的所有输出,以及能够将输入发送到进程。

我怀疑 psuedo-ttys 在这里可能会有所帮助。有没有人有关于如何做到这一点的片段?

0 投票
4 回答
65515 浏览

java - 如何在 CLI 应用程序中“拦截”Ctrl+C?

如何在 CLI(命令行界面)Java 应用程序中拦截 Ctrl+ C(通常会终止进程)?

是否存在多平台解决方案(Linux、Solaris、Windows)?

我正在使用Console's readLine(),但如有必要,我可以使用其他方法从标准输入中读取字符。

0 投票
2 回答
2052 浏览

perl - Perl脚本在通过文件提供标准输入时运行带有参数的C可执行文件?

我想./runnable在参数input.afa上运行和执行。这个可执行文件的标准输入是通过文件finalfile。我早些时候尝试使用 bash 脚本来做同样的事情,但这似乎没有成功。所以我想知道 Perl 是否提供这样的功能。我知道我可以使用反引号或 system() 调用运行带有参数的可执行文件。关于如何通过文件提供标准输入的任何建议。

_更新_

正如我所说,我为此编写了一个 bash 脚本。我不确定如何在 Perl 中进行操作。我写的 bash 脚本是:

标准输入文件中的数据如下,每一行对应一次输入。所以如果有 10 行,那么可执行文件应该运行 10 次。

0 投票
7 回答
4095 浏览

perl - 如何在 Perl 中实时读取外部命令的输出?

我运行了一些 bash 脚本,但它们可能需要几个小时才能完成,在此期间它们会喷出下载速度、ETA 和类似信息。我需要在 perl 中捕获这些信息,但是我遇到了一个问题,我无法逐行读取输出(除非我遗漏了什么)。

任何帮助解决这个问题?

编辑:为了更好地解释这一点,我正在同时运行几个 bash 脚本,我希望将 gtk 与 perl 一起使用来生成方便的进度条。目前,我为每个希望运行的 bash 脚本运行 2 个线程,一个用于更新图形信息的主线程。它看起来像这样(尽可能减少):

0 投票
5 回答
23906 浏览

c - 来自 stdin 的 read() 不会忽略换行符

我正在使用以下条件语句从标准输入中读取。

当从标准输入输入数据时,一般用户在完成后按回车键。但是read()在这种情况下也将 '\n' 视为输入,n = 1并且条件不会评估为假。除了检查 buf 的内容之外,当用户在标准输入上按 enter(不输入任何内容)时,有没有办法使条件评估为 false。read()除了我可能用于此目的之外,还有其他功能吗?

就此而言,当输入来自标准输入(stdin)时,读取确定输入结束的方法是什么?

0 投票
2 回答
15205 浏览

c++ - 使用 QTextStream 以非阻塞方式读取标准输入

使用 Qt,我试图以非阻塞方式读取标准输入流的内容。当套接字收到一些新数据时,我正在使用 QSocketNotifier 来提醒我。通知程序的设置如下所示:

onData()插槽如下所示:

如您所见,我正在尝试使用 select() 系统调用来告诉我何时用完了要读取的数据。然而,实际上发生的事情是在我阅读了第一行文本后,select() 调用返回 0。因此,例如,如果我将 5 行文本写入进程的标准输入流,我只会读取第一行。

可能是什么问题呢?

0 投票
2 回答
5671 浏览

c# - 我可以将二进制文件放入标准输入吗?C#

与此问题相关的是使用 7z 加密二进制文件而没有文件名?

在 C# 中,我如何将二进制文件放入 STDin?我希望下面的方法可以工作,但它没有。这是有道理的。那么我如何推送一个 byte[] 数组呢?

0 投票
4 回答
9420 浏览

c# - 无法使用 7-Zip 压缩标准输入并使用标准输出输出?

我收到错误“未实施”。

我想通过标准输入使用7-Zip压缩文件,然后通过标准输出获取数据并使用我的应用程序进行更多转换。在手册页中,它显示了这个例子:

% 回声富 | 7z 一个虚拟 -tgzip -si -so > /dev/null

我正在使用 Windows 和 C#。

结果:

代码:

还有另一种简单的方法可以将文件读入内存吗?

现在我可以 1)写入一个临时文件并读取(简单并且可以复制/粘贴一些代码)2)使用文件管道(中等?我从来没有做过)3)别的东西。

0 投票
6 回答
41995 浏览

c++ - 检测标准输入是终端还是管道?

当我python从没有参数的终端执行“”时,它会打开 Python 交互式 shell。

当我cat | python从终端执行“”时,它不会启动交互模式。不知何故,在没有得到任何输入的情况下,它检测到它已连接到管道。

我将如何在 C 或 C++ 或 Qt 中进行类似的检测?