如何使用 C# 在 OSX 中正确运行 chmod?

Posted

技术标签:

【中文标题】如何使用 C# 在 OSX 中正确运行 chmod?【英文标题】:How to run properly chmod in OSX with C#? 【发布时间】:2019-11-24 06:19:44 【问题描述】:

我和这里How run chmod in OSX with C#有同样的问题

我想通过 Unity 中的代码更改权限 我试过了:

ProcessStartInfo startInfo = new ProcessStartInfo() 

    FileName = "chmod",
    Arguments = "+x " + "Game.app/Contents/MacOS/Game"                              
;

Process proc = new Process()  StartInfo = startInfo, ;
proc.Start();

但不起作用,有什么建议吗?

【问题讨论】:

欢迎来到 ***!你能再指定doesn't work吗?任何异常/错误?有什么事情发生吗?你传递了正确的参数/路径吗? 没有错误但不起作用,我通过终端尝试了相同的命令,一切正常 你确定你的代码被调用/执行了吗? (断点和调试) 是的,我确定。也许我添加了错误的论点? 可能路径不正确?我不知道 ios 上 Unity 的相对路径如何工作。也许你必须指定startInfo.WorkingDirectory 【参考方案1】:

我不确定,但也许你首先必须打开例如bash 然后将 chmod 调用作为参数传入 -c 之类的东西

ProcessStartInfo startInfo = new ProcessStartInfo() 

    FileName = "/bin/bash",
    Arguments = "-c \" chmod +x  Game.app/Contents/MacOS/Game\" ",

    CreateNoWindow = true
;

Process proc = new Process()  StartInfo = startInfo, ;
proc.Start();

当然仍然假设路径是正确的。

也许还会添加一些回调,例如

proc.ErrorDataReceived += (sender, e) =>

    UnityEngine.Debug.LogError(e.Data);
;
proc.OutputDataReceived += (sender, e) =>

    UnityEngine.Debug.Log(e.Data);
;
proc.Exited += (sender, e) =>

    UnityEngine.Debug.Log(e.ToString());
;

proc.Start();

【讨论】:

还是一样的结果, 我在 Exited Delegate 中看到结果 (ExitCode) 1 好吧,所以至少我们知道该命令已执行并且由于某种原因失败(退出代码 1)也许首先你应该尝试运行 "-c \"ls Game.app/Contents/MacOS/Game\"" 并查看是否找不到相应的文件 啊,秒。我看到了问题。我的游戏名称中有空格(Test Game.app)当我删除空格时一切正常 我替换了名称 Test\" 游戏和作品。非常感谢您的宝贵时间

以上是关于如何使用 C# 在 OSX 中正确运行 chmod?的主要内容,如果未能解决你的问题,请参考以下文章

从 PHP 文件运行 python 脚本

如何使用 xampp 在 OSX 上正确设置 php_gmp

Mac OSX文件权限有'@' - 如何删除'@' [关闭]

如何在 OSX 上正确安装 Python 以与 OpenCV 一起使用?

OSX 上的getsockopt 返回不正确的值?

C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用