Ruby system call (on windows) without a popup command prompt

社会主义新天地 提交于 2021-02-07 09:41:58

问题


I am trying to tidy up a process that uses multiple system calls from inside a ruby script executed using rubyw.exe (1.8.7).

As far as I can understand the main reason for rubyw.exe is that it doesn't pop up a command prompt to distract the user. However it appears that the system calls from within that process still do generate these popups which is very distracting for the users of this process script.

Does anyone know how to do this?

There are lots of questions similar to this on SO but none which quite answers this, if I was using python this questions/answer would help (http://code.activestate.com/lists/python-list/46042/) but so far my searching hasn't found a way to accomplish this with ruby.

UPDATE: There is this thread here Hiding curl Window on Windows which is close but the only working solution there doesn't also allow you to get the standard output.


回答1:


I ended up going with the win32-open3 gem. Because fork isn't implemented on windows systems you can't use the built in open3 and you'll need to do a

gem install win32-open3

However this comes with flags that you can pass to the call method, in particular

There are a couple of differences in the Windows version for open3 (which also apply to Open4.popen4) - the mode flag and the show flag. For the mode, you can specify either 't' (text, the default) or 'b' (binary) as a second argument. For the show flag, you can specify either true or false, which will show the console window, or not, depending on the value you pass. The default is false.

Users of this particular script are no longer bombarded with 15 cmd windows that constantly steal focus, so .... win?



来源:https://stackoverflow.com/questions/12684463/ruby-system-call-on-windows-without-a-popup-command-prompt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!