在 Unix 上分离命令行输出(处理与用户交互)的方法是什么?

发布于 2024-10-20 20:00:53 字数 152 浏览 3 评论 0原文

我正在编写一个控制台应用程序,其中可能需要用户交互(提示键盘输入、cli 参数等),但我想将其与处理结果分开(处理结果转到 cout,以某种方式可以通过管道传输到其他应用程序)。

如果我不能将与用户的所有交互发送到 cerr (并非所有内容都是错误),我该如何实现这一目标?

I'm writing a console application in which user interaction might be necessary (prompt for keyboard input, cli arguments etc.), but I want to keep it separate from the result of the processing (which goes to cout, in a way that it can be piped to some other application).

How can I achieve this, if I can't just send all interaction with the user to cerr (not everything is an error)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

坐在坟头思考人生 2024-10-27 20:00:53

/dev/tty 是通常的方式,但在大多数类 Unix 操作系统上也可以从 cerr/stderr 读取,因为系统通常将 tty 作为 stdin 打开一次,然后 dup() 将其发送到 stdoutstderr 上。

/dev/tty is the usual way, but it's also possible on most Unix-like operating systems to read from cerr/stderr because the system usually opens the tty once as stdin and dup()s it onto stdout and stderr.

笑忘罢 2024-10-27 20:00:53

当你的标准输出通过管道传输到其他地方时,在终端上显示某些内容的唯一方法(除了诅咒和对话框之类的东西)是标准错误。

When your stdout is piped somewhere else, the only way to show something on the terminal (apart from maybe things like curses and dialog) is stderr.

∝单色的世界 2024-10-27 20:00:53

如果需要用户交互,请打开/dev/tty,它将成为进程的控制终端。标准错误和标准输入也可以被重定向。

If you need user interaction, open /dev/tty, it will be the controlling terminal for the process. Standard error and standard input may be redirected as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文