标签: stdin

在C/C++中使用scanf

要使用scanf读取int,我们使用:

scanf("%d", &i);
Run Code Online (Sandbox Code Playgroud)

如果int长不是int ??

注意:使用时ilong它给了我一个警告刺激性..

谢谢!

c c++ stdin scanf

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

来自stdin的wget或curl

我想在从stdin提供URL时下载网页.基本上一个进程连续生成stdout/file的URL,我想将它们管道输出到wget或curl.(如果您愿意,可以将其视为简单的网络爬虫).

这似乎工作正常:

tail 1.log | wget -i - -O - -q 
Run Code Online (Sandbox Code Playgroud)

但是当我使用'tail -f'并且它不再起作用时(缓冲或wget正在等待EOF?):

tail -f 1.log | wget -i - -O - -q
Run Code Online (Sandbox Code Playgroud)

任何人都可以使用wget,curl或任何其他标准Unix工具提供解决方案吗?理想情况下,我不想在循环中重新启动wget,只是让它继续运行下载URL.

unix curl stdin wget xargs

15
推荐指数
2
解决办法
8818
查看次数

如何在命令行上获取ruby -e的管道输入?

我试图找出如何在bash控制台上编写一个内衬并管道到ruby,但我无法弄清楚如何获取输入.这不起作用:

echo "My String" | ruby -e "#{STDIN.read.first.downcase}"
Run Code Online (Sandbox Code Playgroud)

如何在ruby中获取管道输入?

ruby bash stdin pipe

15
推荐指数
3
解决办法
8720
查看次数

从管道读取Golang读取大量数据

我正在尝试读取一个被tar,流式传输到stdin的存档,但我在某种程度上读取的数据远远超过tar发送的数据.

我像这样运行我的命令:

tar -cf - somefolder | ./my-go-binary
Run Code Online (Sandbox Code Playgroud)

源代码是这样的:

package main

import (
    "bufio"
    "io"
    "log"
    "os"
)

// Read from standard input
func main() {
    reader := bufio.NewReader(os.Stdin)
    // Read all data from stdin, processing subsequent reads as chunks.
    parts := 0
    for {
        parts++
        data := make([]byte, 4<<20) // Read 4MB at a time
        _, err := reader.Read(data)
        if err == io.EOF {
            break
        } else if err != nil {
            log.Fatalf("Problems reading from input: %s", …
Run Code Online (Sandbox Code Playgroud)

stdin tar go

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

python子进程中的多个输入和输出进行通信

我需要做这样的帖子,但是我需要创建一个可以给出输入并多次输出的子进程.该帖子的接受答案有良好的代码......

from subprocess import Popen, PIPE, STDOUT

p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)    
grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0]
print(grep_stdout.decode())

# four
# five
Run Code Online (Sandbox Code Playgroud)

......我想继续这样:

grep_stdout2 = p.communicate(input=b'spam\neggs\nfrench fries\nbacon\nspam\nspam\n')[0]
print(grep_stdout2.decode())

# french fries
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 928, in communicate
    raise ValueError("Cannot send input after starting communication")
ValueError: Cannot send input after starting communication
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,proc.stdin.write()方法不能让你收集输出.什么是保持线路开放以进行持续输入/输出的最简单方法?

编辑:====================

它看起来像是pexpect一个有用的库,我正在尝试做什么,但我无法让它工作.这是对我实际任务的更完整的解释.我hfst用来获得个别(俄语)单词的语法分析.以下演示了它在bash shell中的行为:

$ hfst-lookup analyser-gt-desc.hfstol
> ?????
?????   ?????+N+Neu+Inan+Sg+Acc …
Run Code Online (Sandbox Code Playgroud)

python stdin subprocess stdout pexpect

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

无法获取lldb来读取文件输入

我正在使用lldb作为OSX中的独立调试器.我正在尝试使用文本文件作为输入来调试C可执行文件.lldb文档指定了以下用于将stdin更改为给定文件的命令:

process launch -i <file>
Run Code Online (Sandbox Code Playgroud)

使用此命令,lldb似乎忽略指定的文件,而不是等待键盘输入.

这是预期的行为吗?如果是这样; 我需要做些什么来实际操作我想要的输入文件?

tl; dr:我如何让lldb模仿标准终端执行,如:

./executable < <file>
Run Code Online (Sandbox Code Playgroud)

c macos stdin lldb

15
推荐指数
1
解决办法
4700
查看次数

为什么Python在打印回溯时会从当前目录中读取?

$ echo "Your code is bad and you should feel bad" > "<stdin>"
$ python
Python 3.6.0 (default, Dec 28 2016, 19:53:26) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 + '2'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    Your code is bad and you should feel bad
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)

为什么Python会将字符串"<stdin>"与匹配该文件名的文件混淆?如果遇到未处理的异常,我不希望Python试图从磁盘中读取任何文件.

您也可以使用"<string>"文件名获取它:

$ echo …
Run Code Online (Sandbox Code Playgroud)

python stdin

15
推荐指数
1
解决办法
350
查看次数

检查C#中的标准输入

我正在编写一个小命令行实用程序,其目的是解析另一个实用程序的输出.我希望它可以通过两种方式调用:

c:\> myutility filewithoutput.txt
Run Code Online (Sandbox Code Playgroud)

要么,

c:\> otherutility -args | myutility
Run Code Online (Sandbox Code Playgroud)

所以,基本上,标准或文件参数.我对此的第一次尝试看起来像这样:

TextReader reader;

if (args.Length > 1) {
    reader = new StreamReader(new FileStream(args[1], FileMode.Open));
} else {
    reader = Console.In;
}

Process(reader);
Run Code Online (Sandbox Code Playgroud)

文件参数工作正常,并将实用程序的输出传递给我的实用程序工作正常,但如果您只是正常调用它(没有参数和没有管道数据),它会挂起.或者说,它阻止等待从标准读取.

我的第二稿看起来像这样:

TextReader reader;

if (args.Length > 1) {
    reader = new StreamReader(new FileStream(args[1], FileMode.Open));
} else {
    if(Console.KeyAvailable) {
        reader = Console.In;
    } else {
        Console.WriteLine("Error, need data");
        return;
    }
}

Process(reader);
Run Code Online (Sandbox Code Playgroud)

虽然KeyAvailable修复了"无输入"问题,但如果您尝试管道数据> _ <,则会引发异常

Unhandled Exception: System.InvalidOperationException: Cannot see if a key
has been …
Run Code Online (Sandbox Code Playgroud)

.net c# console stdin

14
推荐指数
2
解决办法
7014
查看次数

从std :: cin读取二进制数据

将二进制(非格式化)数据读std::cin入a string或a中的最简单方法是stringstream什么?

c++ binary stdin stream cin

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

python 3中最快的stdin/out IO?

我一直在使用python 3.1.2在SPOJ.pl上解决一些问题,而一些人快速导致简单的问题让我想知道是否有更快的方法来处理输入和输出.

我试过用了

input()
print()
Run Code Online (Sandbox Code Playgroud)

sys.stdin.readline()
sys.stdout.write()
Run Code Online (Sandbox Code Playgroud)

更确切地说

for line in sys.stdin:
    #Handle input
    sys.stdout.write(output)
Run Code Online (Sandbox Code Playgroud)

处理每一行.我还尝试收集列表中的所有输出,并在处理完所有内容时立即打印.

但所有这些都会产生类似的执行时间.

有没有更快的方法来处理stdin/out的输入和输出?

python io performance stdin python-3.x

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

stdin ×10

python ×3

c ×2

c++ ×2

.net ×1

bash ×1

binary ×1

c# ×1

cin ×1

console ×1

curl ×1

go ×1

io ×1

lldb ×1

macos ×1

performance ×1

pexpect ×1

pipe ×1

python-3.x ×1

ruby ×1

scanf ×1

stdout ×1

stream ×1

subprocess ×1

tar ×1

unix ×1

wget ×1

xargs ×1