问题标签 [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 投票
1 回答
1175 浏览

multithreading - Win32:STD_IN_HANDLE 块上的 ReadFileEx(),为什么?

我正在尝试使用 Win32 API 创建一个从 STD_INPUT_HANDLE 读取的子线程,并将它读取的字节推送到套接字中。因为我希望能够在退出时安全地关闭此线程,所以我使用 ReadFileEx() 和重叠 I/O,而不是普通的旧阻塞 ReadFile()。这个想法是我的线程将在WaitForSingleObject()而不是ReadFile()中等待,当主线程希望从线程离开时,它会在该对象上发出信号,从线程将唤醒并退出,然后主线程可以继续其关闭序列。

我的问题是这样的:尽管文档说 ReadFileEx() 是异步的,因此永远不会阻塞……我的从属线程仍在 ReadFileEx() 中阻塞。(我在事件循环中插入了 printf 以验证它在哪里阻塞)因此,我的主线程无法关闭从属线程,因此主程序永远不会退出。

我做错了什么,还是 ReadFileEx() 意味着在从标准输入读取时阻塞?如果是后者,线程关闭问题的解决方案是什么?从属线程的入口函数如下,供大家参考...

0 投票
8 回答
60204 浏览

ssh - 如何让 ssh 从 stdin 接收密码

如何让 SSH 从标准输入读取密码,默认情况下它不会这样做?

0 投票
3 回答
17002 浏览

perl - 如何重新初始化 Perl 的 STDIN/STDOUT/STDERR?

我有一个 Perl 脚本,它自己分叉和守护进程。它由 cron 运行,所以为了不留下僵尸,我关闭了 STDIN、STDOUT 和 STDERR:

我的问题是:我想在此之后至少恢复 STDOUT(恢复其他 2 会很好)。但是我需要使用什么魔法符号来重新打开 STDOUT,就像以前的 STDOUT 一样?

我知道如果我从 tty 运行,我可以使用“/dev/tty”(但我是从 cron 运行并取决于其他地方的标准输出)。我还阅读了可以将 STDOUT 放在一边的技巧open SAVEOUT,">&STDOUT",但是仅制作此副本的行为并不能解决留下僵尸的原始问题。

我正在寻找是否有一些魔法open STDOUT,"|-"(我知道不是)以应该打开的方式打开 STDOUT。

0 投票
3 回答
1418 浏览

bash - Bash 中的临时输入重定向

我正在寻找一种将输入从文件转储到终端的方法,但是当达到 EOF 时,我希望输入返回到我的键盘。有没有办法用 Bash(或任何其他常用的 *nix shell)来做到这一点?

详细信息:我正在调试一个执行分叉以启动子进程的服务器程序。每次我使用 gdb 启动调试会话时,我都必须输入 set follow-fork-mode child。我想使用某种输入重定向来预先填充它。我还可以想到其他用途,所以我更喜欢通用解决方案 - 因此这个问题与 gdb无关。

解决方案: start-server.sh

运行-server.txt

0 投票
1 回答
2358 浏览

ssh - 在“ssh”的 popen() 上调用 fgets() 正在刷新调用进程的标准输入的开头(ptty 问题)

我现在已经将其缩减为一个最小的测试用例。到目前为止,我已经能够确定这是与 ssh 管道出现的伪终端有关的问题。在 ssh 调用中添加“-t -t”可以改善问题,因为现在需要再次调用 fgets() 才能导致问题。我怀疑 ssh 命令的 stderr 输出以某种方式解决了这个问题,现在我已将 stderr 重定向到 ssh 代码中的 stdout 以执行。我确实想知道“tcgetattr:无效参数”错误是否是问题的一部分,但我不确定如何摆脱它。它似乎来自存在的 -t -t 。我相信 -t -t 正朝着正确的方向发展,但我必须以某种方式为 stderr 设置伪终端,也许测试会正常工作?

生成文件:

test.c 源文件:

这表明它正在运行:

这表明它以失败的方式运行:

0 投票
9 回答
57944 浏览

bash - 如何欺骗应用程序认为其标准输出是终端,而不是管道

我正在尝试与“检测标准输入是终端还是管道? ”相反。

我正在运行一个正在更改其输出格式的应用程序,因为它检测到 STDOUT 上的管道,并且我希望它认为它是一个交互式终端,以便在重定向时获得相同的输出。

我在想将它包装在expect脚本中或proc_open()在 PHP 中使用 a 会做到这一点,但事实并非如此。

有什么想法吗?

0 投票
23 回答
1954536 浏览

python - 你如何从标准输入读取?

我正在尝试做一些代码高尔夫挑战,但它们都需要从stdin. 我如何在 Python 中得到它?

0 投票
3 回答
7727 浏览

text - 二进制标准输入和标准输出

我正在寻找编写一对实用程序,它们在标准输入上读取换行符分隔的整数列表并输出其二进制(4 字节)等效于标准输出,反之亦然。

我的第一个想法是一个简单的 bash/linux 命令可以做到这一点,但我找不到。我的第二个想法是在 C++ 中执行此操作,但我不知道如何将 stdin 或 stdout 更改为二进制流。

关于这样做的好方法有什么想法吗?我对任何特定的编程语言都是公正的。

0 投票
3 回答
1029 浏览

c - 在 read() 之后使用 getchar()

c 用于键盘捕获。以下代码查找何时按下箭头键/ esc。同时,我想阅读用户输入的整个单词,这些单词也应该显示在标准输出上。

但是,如果我删除 '\n',此代码将不起作用。我希望标准输出应该表现得像一个普通的外壳。

0 投票
1 回答
230 浏览

c++ - CreateProcessWithLoginW - 重定向 STDOUT

我想要的是让进程启动,但输入和输出都在同一个控制台中。

当我使用此代码时,它会创建一个全新的窗口,而不是在同一个窗口中。有没有办法取消设置“CREATE_NEW_CONSOLE”标志,因为即使我将它设置为 0,它仍然会创建一个新的控制台。