生成子进程,并从Ruby代码向其STDIN发送命令

时间:2013-08-07 11:31:02

标签: ruby-on-rails ruby ruby-on-rails-3 spawn

实际上,由于缺乏对这个话题的了解,如何质疑这个问题。

我需要的是,我想创建一个图像文件(png)。为此运行ubuntu中的可执行文件(该文件的功能与imagemagick and works successfully in node.js )相同并将文本和输出png写入位置/local/bin/img.png

关注流程。运行图像工具sampleexe

   writeme = IO.popen("~/local/bin/sampleexe", "w")

使用下面的代码写入图像文件并将其保存到一个位置。但我不知道以下代码是否正确。

writeme = IO.popen("~/local/bin/sampleexe", "w")
writeme.puts "hello" # program will get hello\n on STDIN

writeme.puts "font=Chewy" 
writeme.puts "font_size=40"
writeme.puts "message=Hello,world"

writeme.puts <<-HTML
      <h2>ffffffffffffffffffffffffff</h2>
       width=900  
    HTML

writeme.puts 'output=./local/bin/img.png'

writeme.close       

我在上述路径中收到了img.png文件。但是无法打开。请帮忙。

使用node.js工具sampleexe成功写入输入(textmessage,textboxes)并将这些输入输出到png文件我必须使用ruby同样实现

node.js工作代码

var spawn = require('child_process').spawn;
var imgGen = spawn('sampleexe');

imgGen.stderr.on('data', function(chunk) {
  console.error(chunk.toString());
});
 imgGen.stdin.write('width=900\n');
          imgGen.stdin.write('height=400\n');


          imgGen.stdin.write('textboxes=<textboxes>'
                + '<textbox><rect>0,0,500,250</rect><color>0,0,0</color><font>Helvetica</font><align>Center</align><message>' + url.query.msg1 + '</message></textbox>'
                + '<textbox><rect>0,250,300,100</rect><color>200,0,0</color><font>Helvetica</font><align>Right</align><message>' + url.query.msg2 + '</message></textbox>'
                + '<textbox><rect>600,50,200,300</rect><color>255,153,10</color><font>Helvetica</font><justify>true</justify><message>'+url.query.msg3 + '</message></textbox>'
                + '</textboxes>\n');
          imgGen.stdin.write('output=/tmp/img.png\n');

0 个答案:

没有答案