草庐IT

STDIN_FILENO

全部标签

node.js - 如何通过 Node.js 中的 child_process.spawn() 将长字符串传送到/dev/stdin?

我正在尝试通过stdin传递数据来执行Inkscape。Inkscape仅通过/dev/stdin支持此功能。基本上,我正在尝试做这样的事情:echo"..."|inkscape-z-f/dev/stdin-A/dev/stdout我不想将SVG写入磁盘。我尝试只使用stdin.write(),但它不起作用(可能是因为/dev/stdin):varcmd=spawn("inkscape",["-z","-f","/dev/stdin","-A","/dev/stdout"],{encoding:"buffer",stdio:["pipe",stdoutPipe,"pipe"]});cm

javascript - process.stdin 流的可读事件和数据事件有什么区别?

说我有process.stdin.setEncoding('utf8');varmyString='';两者有什么区别process.stdin.on('readable',function(){myString+=process.stdin.read();});和process.stdin.on('data',function(chunk){myString+=chunk;});如果输入字符串在标准输入结束后相同,他们会给我相同的myString每种方法的最佳做法是什么?谢谢 最佳答案 它们是两个不同的API,允许您访问相同的数据

node.js - Nodejs子进程: write to stdin from an already initialised process

我正在尝试使用Node的child_process生成一个外部进程phantomjs,然后在初始化后向该进程发送信息,这可能吗?我有以下代码:varspawn=require('child_process').spawn,child=spawn('phantomjs');child.stdin.setEncoding='utf-8';child.stdout.pipe(process.stdout);child.stdin.write("console.log('HellofromPhantomJS')");但我在标准输出上得到的唯一信息是phantomjs控制台的初始提示。phant

python - 如何从python中的stdin逐行读取

每个人都知道如何在C中计算来自STDIN的字符。但是,当我尝试在python3中这样做时,我发现这是一个难题。(counter.py)importsyschrCounter=0forlineinsys.stdin.readline():chrCounter+=len(line)print(chrCounter)然后我尝试通过测试程序python3counter.py答案只是第一行“importsys”的长度。事实上,程序只从标准输入中读取第一行,并丢弃其余的。如果我用sys.stdin.read()代替sys.stdin.readline就可以了importsysprint(len(s

python - sys.stdin.readline() 无提示读取,返回 'nothing in between'

我有一个执行以下操作的函数(除其他外):userinput=stdin.readline()betAmount=int(userinput)应该将输入的整数从标准输入中作为字符串转换为整数。但是,当我调用该函数时,它会返回一个换行符(它甚至不等待我输入任何内容)。在程序的早期,我得到了以下形式的一些输入:stdin.read(1)捕获单个字符。这可能与它有关吗?我是否以某种方式将换行符写入标准输入的下一行?我该如何解决这个问题? 最佳答案 stdin.read(1)从stdin读取一个字符。如果此时要读取多个字符(例如,读入的一个字

python - 属性错误 : StringIO instance has no attribute 'fileno'

defcaptureOutput(self,func,*args,**kwargs):passsys.stdout.flush()sys.stderr.flush()(outfd,fn)=tempfile.mkstemp()fout=os.fdopen(outfd,'r')os.unlink(fn)(errfd,fn)=tempfile.mkstemp()ferr=os.fdopen(errfd,'r')os.unlink(fn)try:oldstdout=os.dup(sys.stdout.fileno())oldstderr=os.dup(sys.stderr.fileno())o

python - 使用 Popen.stdin 执行多个命令

我想使用管道在从python脚本启动的独立应用程序中执行多个命令。我可以可靠地将命令传递给程序的标准输入的唯一方法是使用Popen.communicate但它会在命令执行后关闭程序。如果我使用Popen.stdin.write比命令只执行5次左右的1次,它就不能可靠地工作。我做错了什么?稍微详细一点:我有一个应用程序,它监听标准输入的命令并逐行执行它们。我希望能够运行应用程序并将各种命令传递给它,基于用户与GUI的交互。这是一个简单的测试示例:importos,stringfromsubprocessimportPopen,PIPEcommand="anApplication"proc

python - 如何确定 sys.stdin 是从文件重定向还是从另一个进程通过管道传输?

在一个旨在从shell运行的简单Python脚本中,我能否可靠地确定sys.stdin是从实际文件重定向还是从另一个进程通过管道传输?我想根据标准输入是来自数据文件还是通过管道从另一个进程流式传输来更改运行时行为。正如预期的那样,isatty()在这两种情况下都返回False。这是一个快速的isatty()测试:#test.pyimportosimportsysprintsys.stdin.isatty()printos.isatty(sys.stdin.fileno())测试:pythontest.py产生:FalseFalse和:ls-al|pythontest.py产生:Fals

python - 在 Python2 中从 sys.stdin 制作 io.BufferedReader

如何从标准文件对象(如sys.stdin或您从“打开”中获得的内容)创建BufferedReader对象?(背景:我需要一个peek()方法,标准文件对象无法拥有该方法。也欢迎任何解决此问题的建议。)我本以为这会起作用,但事实并非如此:>>>importsys>>>importio>>>io.BufferedReader(sys.stdin)Traceback(mostrecentcalllast):File"",line1,inAttributeError:'file'objecthasnoattribute'readable'(这是Python2.7)哈,明白了,至少对于任何有文件

python - 为 sys.stdin 设置较小的缓冲区大小?

我正在使用以下bash命令模式运行memcached:memcached-vv2>&1|teememkeywatch2010098.log2>&1|~/bin/memtracer.py|teememkeywatchCounts20100908.log尝试在整个平台范围内追踪不匹配的get设置。memtracer脚本如下,可以按需要运行,但有一个小问题。观察中间日志文件大小,memtracer.py直到memkeywatchYMD.log才开始获取输入大小约为15-18K。有没有更好的读取标准输入的方法,或者将缓冲区大小减少到1k以下以加快响应时间?#!/usr/bin/pythonim