问题标签 [input-buffer]
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.
perl - Perl IPC::Run3:如何模拟一个 pty 的 stdin 到子进程?
这是 IPC::Open3 的后续问题,并确定孩子是否正在等待输入,尽管他们承认它们不相关。
采取以下示例代码:
上面的代码command
是另一个 perl 脚本。子脚本调用who -m
以从终端查找谁拥有标准输入,这是为了在使用 root 或其他通用系统用户调用子脚本或父脚本的情况下使用。
当父母调用时,我从孩子那里得到的错误如下。
子代码如下。
第 354 行代码:
当我从命令行调用子脚本时,上面的代码工作得很好,但是由于who -m
试图查看谁拥有终端的标准输入并且终端已被父脚本替换,我相信我需要找到一种方法来调用从父级运行时使用模拟 pty 的 who -m。无论是通过修改孩子还是父母或两者都无关紧要,因为我可以同时修改两者。
所以我的问题是:我怎样才能在父母内部运行孩子并且仍然依赖who -m
被喂给孩子的输出?
编辑:ikegami 在他的回答评论中提供了最好的解决方案。它没有回答问题,但确实解决了我的问题。
我的 ssh 守护进程设置了 env var
SSH_TTY
,所以你可以使用perl -MFile::stat -E'say scalar(getpwuid(stat($ENV{SSH_TTY})->uid))'
.scalar(getpwuid($>))
如果未设置,则默认为。
matlab - 在 Matlab 中读取 UART 传输输入缓冲区
我正在尝试在两个 ESP8266 Wifi 芯片之间进行串行通信。首先,我尝试在 for 循环中发送样本数据 10 次。这是代码:
发射器:
接收者:
它运作良好。问题是当我想发送一些延迟的数据时,发送器应该再次连接到接收器,并且服务器(接收器)接收到一些数据,表明再次建立连接。接收到的 Buffer 应该是:
但重新连接后接收到的 Buffer 是:
数据的剩余部分将在下一个数据包中读取,下一个数据包相同。
我应该怎么做才能只接收数据?
发送和接收函数:
c - 从C中的文本文件中扫描值时如何清除输入缓冲区?
文本文件中的内容是:
输出:
当我输出程序时,我可以获得所有值,但由于某种原因,当我打印这些值时,整个字符串减半并向下移动一行。
如果您想看一下,repl.it 就在这里:
如何让输出单行打印出来;如果是这样的话,而不是阅读 \n “换行符”?
c - 是通过将 char * 缓冲区分配给 '\n' 来清除缓冲区,同时在 c 中的循环内获取用户输入错误?
我试图解决当我想在循环中获取用户输入时遇到的问题*。编辑 *:问题是这个 -> 清除缓冲区以读取下一个输入。
这容易出错吗?
编辑:这是我遇到错误的代码。没有分配给 '\n' 我得到了错误的循环计数和输入。删除那些行没有错:/
edit2:错误基于内存溢出以及 fgets 如何处理输入。
如果我输入超过 9 个数字作为输入(我不小心输入了),则跳转到下一个循环。如果我使用 while 循环清除缓冲区,则不会发生任何错误。*buffer = '\n' 没用,没意义...
c - 关于在c中清除输入缓冲区
我有这个代码,一个从用户那里获取一个负整数的程序,如果不将它们困在一个循环中,直到他们输入一个负整数。我有这部分,但是,我怎么能清除输入缓冲区?
我尝试使用 while ((getchar()) != '\n'); 在第一次 scanf_s 之后,但它失败了。
这是代码
c++ - 无法清除cin。卡在输入
当cin
失败时,它永远失败。即,我以后什么都看不到,而且cin.fail()
总是返回真,无论我如何尝试清除它。
重新创建的最少代码:
用最少的输入:
我在这个问题下尝试了所有 C++ 答案,但没有一个有效。奇怪的是,fflush(stdin)
做得很好。
我使用 Dev-C++ 作为我的 IDE,并将其打包的 GCC 替换为 SourceForge 的 MinGW GCC 6.3.0。g++.exe
编译时提供以下参数
-static
在没有最后两个参数的情况下,我的 Ubuntu 上的 GCC 7.2.0 也出现了同样的问题。
正如评论中所建议的,交换cin.clear()
和cin.ignore()
工作的顺序。这是什么原因?
asynchronous - MASM 汇编语言中的异步输入
我有一个使用 masm 用汇编语言制作秒表的项目。秒表在程序启动时开始并继续。我想实现停止、暂停和播放等功能。当秒表运行时,我不能要求用户输入任何值,因为它是一个循环,并且在每次迭代中,控制台上的文本每隔一毫秒就会更新一次。我在想,在循环的每次迭代之前,我可以检查键盘缓冲区或类似的东西,这表明某个键被按下并使用该值来检测和停止、暂停或播放秒表,这会很好。我知道它不是真正的异步解决方案,但我在 Internet 上找不到任何关于我的问题的描述性内容。
我的秒表代码:我想做我在做之前问过的事情call clrscr
c - While 循环在第二次迭代中跳过第一个`fgets()`
我知道这样的问题一直被问到,而且我已经阅读了几个,但是,我从来没有scanf()
像其他所有代码一样在我的代码中使用过,所以我找不到类似的问题。我不知道为什么在第二次、第三次、第四次等迭代中,while 循环跳过了我的第一个fgets()
.
代码:
输出:
...ETC。
我认为这与清除输入缓冲区有关,我尝试了几件事,但没有任何效果。第二天乱搞C,所以我不太了解。(Python 更简单,哈哈)
swift - 线程 6:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
我正在从数据中读取字节。但是在第一次迭代while循环后崩溃了。
注意:这不是索引越界问题。