c# - 在 mac 上用 c# 启动一个外部进程

标签 c# macos mono process.start

我成功地使用 System.Diagnostics.Process.Start() 在 Windows 上启动我的外部单声道可执行文件。但是它在 mac 上失败了。我没有收到任何错误,根本什么都没有发生。

我尝试过以下方式:

System.Diagnostics.Process.Start("mono", "/path/program.exe");

我也试过像下面这样打开终端(也失败了):

System.Diagnostics.Process.Start("Terminal");

我唯一能做的就是按以下方式启动终端:

System.Diagnostics.Process.Start("open", "-a Terminal");

有什么想法吗?如果有任何帮助,我将不胜感激。

谢谢!

最佳答案

您需要做的是使用实际可执行文件的完整路径。在 OSX 上,“应用程序”实际上是具有 .app 扩展名的特殊结构文件夹,可执行文件(通常)位于 Content/MacOS/[name] 下。

例如,打开终端:

System.Diagnostics.Process.Start("/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal");

或者对于 TextEdit:

System.Diagnostics.Process.Start("/Applications/TextEdit.app/Contents/MacOS/TextEdit");

要找到可执行文件,您可以右键单击(或按住 Control 单击)应用程序,然后选择显示包内容,这将在 Finder 中打开实际文件夹。然后您可以导航到 Contents/MacOS 文件夹以找到实际的可执行文件。

要运行您的Mono 可执行文件,您必须使用mono 可执行文件的完整路径并将您的程序作为参数传递。通常它会像 /usr/local/bin/mono 或者可能是 /usr/bin/mono

例如:

System.Diagnostics.Process.Start("/usr/bin/local/mono /Users/Ilya/Projects/SomeApp.exe");

显然您会使用您的 .exe 文件的实际路径,以上只是一个示例。

关于c# - 在 mac 上用 c# 启动一个外部进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452651/

相关文章:

c# - WPF Styling 样式中的嵌套元素

c# - 寻找一种在缓存时减少锁定的方法

xcode - 设置统一的文件路径

macos - 如何在 OSX 中监视文件打开和文件读取事件

c# - 具有简单 SSL 支持的嵌入式 C# Web 服务器

mono - 无需安装单声道即可分发应用程序

c# - 安全与不安全代码

python - brew 安装的 Python 没有覆盖系统 python

c# - 如何使用 argv 在 C# 中启动子进程? (或将 agrv 转换为合法的 arg 字符串)

c# - 有没有办法编辑文件夹中的所有类以继承某个基类?