Csharp/C#教程:从.NET执行Cygwin进程?分享


从.NET执行Cygwin进程?

我正在尝试从.NET应用程序启动Cygwin版本的ruby.exe,但我被卡住了。

c:>"c:cygwinbinruby.exe" c:testruby.rb /usr/bin/ruby: no such file to load -- ubygems (LoadError) 

如你所见,Ruby无法找到库,因为它正在寻找一些Linux风格的路径。

显然,当我从.NET运行ruby.exe时,由于找不到库,它就像上面那样失败了。

如果我没有加载任何库它可以正常工作:

 c:>"c:cygwinbinruby.exe" -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] 

最初cygwin从这个cygwin.bat开始

 chdir C:cygwinbin bash --login -i 

我怎样才能让.NET首先进入cygwin环境然后在那个环境中执行ruby?

您是否正在使用混合本机Windows ruby​​gems和Cygwin ruby​​? 使用Cygwin ruby​​gems似乎对我来说很好。 (为什么你的Cygwin ruby​​解释器显然在搜索带有Windows反斜杠的路径?)。

或者,你试过run.exe吗?

 C:cygwinbinrun.exe -p /starting/dir exe_to_run 

这是man-page条目:

名称

run – 启动带有隐藏控制台窗口的程序

概要

运行[-p path]命令[-wait]参数

runco​​mmand [-p path] [-wait]参数

描述

Windows程序是GUI程序或控制台程序。 启动时,控制台程序将附加到现有控制台或创建新控制台。 GUI程序永远不会附加到现有的控制台。 没有办法连接到现有的控制台,但如果作为GUI程序启动则隐藏它。

run会为你做这个。 它作为中间函数启动并启动程序但隐藏了控制台窗口。

使用-p path,您可以添加PATH环境变量的路径。

发出-wait作为第一个程序参数将使run等待程序completition,否则立即返回。

第二个变体是用于创建包装器。 如果可执行文件名为runco​​mmand(例如runemacs),则run将尝试启动程序(例如emacs)。

例子

运行-p / usr / X11R6 / bin xterm

运行emacs -wait runemacs -wait

运行make -wait

为什么不执行从.NET应用程序运行ruby的非交互式bash shell? 就像是:

 bash --login -c   

不确定您的文件结构,但是,例如,

 bash --login -c /usr/bin/ruby ~/test/ruby.rb 

查看bash手册页中的-c选项以获取更多信息。

上述就是C#学习教程:从.NET执行Cygwin进程?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/949388.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

精彩推荐