标签: stdin

检测stdin是终端还是管道?

当我python从没有参数的终端执行" "时,它会启动Python交互式shell.

当我cat | python从终端执行" "时,它不会启动交互模式.不知何故,没有得到任何输入,它已检测到它已连接到管道.

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

c c++ qt stdin pipe

108
推荐指数
4
解决办法
3万
查看次数

nodejs如何从stdin读取键击

是否可以在运行的nodejs脚本中侦听传入的击键?如果我使用process.openStdin()并听取它的'data'事件,那么输入将被缓冲,直到下一个换行符,如下所示:

// stdin_test.js
var stdin = process.openStdin();
stdin.on('data', function(chunk) { console.log("Got chunk: " + chunk); });
Run Code Online (Sandbox Code Playgroud)

运行这个,我得到:

$ node stdin_test.js
                <-- type '1'
                <-- type '2'
                <-- hit enter
Got chunk: 12
Run Code Online (Sandbox Code Playgroud)

我想要看的是:

$ node stdin_test.js
                <-- type '1' (without hitting enter yet)
 Got chunk: 1
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个与例如红宝石相当的nodejsgetc

这可能吗?

stdin input node.js

105
推荐指数
6
解决办法
8万
查看次数

如何从C中的控制台读取一行?

在C控制台程序中读取完整行的最简单方法是什么?输入的文本可能具有可变长度,我们无法对其内容进行任何假设.

c io console stdin readline

98
推荐指数
7
解决办法
25万
查看次数

如何将变量的值传递给命令的stdin?

我正在编写一个应该有点安全的shell脚本,即不通过命令参数传递安全数据,最好不使用临时文件.如何将变量传递给命令的stdin?或者,如果不可能,如何正确使用临时文件进行此类任务?

security bash stdin

91
推荐指数
7
解决办法
7万
查看次数

在Ruby中连续读取外部进程的STDOUT

我想通过ruby脚本从命令行运行blender,然后逐行处理blender给出的输出以更新GUI中的进度条.混合器是我需要读取的stdout的外部进程并不重要.

当blender进程仍在运行时,我似乎无法捕获blender正常打印到shell的进度消息,并且我尝试了几种方法.搅拌机退出后,我似乎总是访问搅拌机的标准配置,而不是在它仍在运行时.

这是尝试失败的一个例子.它确实得到并打印了搅拌机输出的前25行,但只有在搅拌机过程退出后:

blender = nil
t = Thread.new do
  blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1"
end
puts "Blender is doing its job now..."
25.times { puts blender.gets}
Run Code Online (Sandbox Code Playgroud)

编辑:

为了使它更清晰一点,调用blender的命令会在shell中返回一个输出流,指示进度(第1-16部分已完成等).似乎任何"获取"输出的调用都会被阻止,直到混合器退出为止.问题是如何在blender仍在运行时访问此输出,因为blender将其输出打印到shell.

ruby shell stdin stdout process

84
推荐指数
3
解决办法
3万
查看次数

如何在CLI应用程序中"拦截"Ctrl + C?

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

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

我使用ConsolereadLine(),但如果有必要,我会用一些其他的方法来读取从标准输入的字符.

java command-line stdin copy-paste command-line-interface

81
推荐指数
3
解决办法
6万
查看次数

从标准输入读取整数

如何使用fmt.ScanfGo中的函数从标准输入获取整数输入?

如果无法使用fmt.Scanf,那么读取单个整数的最佳方法是什么?

stdin go

80
推荐指数
4
解决办法
8万
查看次数

如何将输入传递给Bash while循环并在循环结束后保留​​变量

Bash允许使用: cat <(echo "$FILECONTENT")

Bash还允许使用: while read i; do echo $i; done </etc/passwd

结合前两个可以使用: echo $FILECONTENT | while read i; do echo $i; done

最后一个问题是它创建了子shell,而在while循环结束后,变量i不再被访问.

我的问题是:

如何实现这样的目标:while read i; do echo $i; done <(echo "$FILECONTENT")或者换句话说:我怎样才能确定i循环中存活?

请注意我知道封闭while语句{}但这并不能解决问题(想象一下你想在函数中使用while循环并返回i变量)

bash stdin pipe while-loop

80
推荐指数
2
解决办法
8万
查看次数

使用fflush(stdin)

因此,谷歌快速搜索fflush(stdin)清除输入缓冲区会发现许多网站警告不要使用它.然而,这正是我的CS教授教授课程的原因.

使用有多糟糕fflush(stdin)?即使我的教授正在使用它并且似乎完美无缺地工作,我是否真的应该放弃使用它?

c stdin fflush

69
推荐指数
6
解决办法
4万
查看次数

68
推荐指数
6
解决办法
7万
查看次数