gpt4 book ai didi

c# - Mono 无法访问文件,即使 linux shell 可以在没有 root 的情况下访问

转载 作者:行者123 更新时间:2023-12-03 10:01:32 26 4
gpt4 key购买 nike

这可能是一个错误的地方问这个问题(但我认为它是正确的地方,因为它涉及编程)。

所以我为我们的学校项目得到了一个树莓派零。我通过 SSH 进入它以检查它可以用它做什么。我对如何使用这张卡上的 GPIO 引脚进行了一些研究。
基本上:

$ echo 17 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio17/direction
$ echo 1 > /sys/class/gpio/gpio17/value
$ echo 17 > /sys/class/gpio/unexport

启用 GPIO 引脚 17 并将数字 1 写入其中并“取消导出”它,不需要 root。
我还想尝试一下这张卡片中的一些语言。我尝试了 python、C# 和 Rust 没有问题(尽管 rust 编译速度很慢,但它可以工作)。所以我开始使用我最喜欢的语言 C# 和单声道。安装它并编译一个基本程序没什么大不了的,它可以工作。
所以我写这个:
using System;
using System.IO;

namespace Program
{
public static class Program
{
public static void Main()
{
if (Directory.Exists("/sys/class/gpio/gpio17/"))
File.WriteAllText("/sys/class/gpio/unexport", "17");

File.WriteAllText("/sys/class/gpio/export", "17");
File.WriteAllText("/sys/class/gpio/gpio17/direction", "out");
File.WriteAllText("/sys/class/gpio/gpio17/value", "1");
}
}
}

基本上,如果它发现 17 引脚打开,“取消导出”它然后重新导出它,设置为输出并写入数字 1。
汇编:
mcs program.cs -out:program.exe -debug && ./program.exe

输出:
Unhandled Exception:
System.UnauthorizedAccessException: Access to the path "/sys/class/gpio/gpio17/direction" is
denied.

什么?如何?它适用于 sudo mono ./program.exe不,它没有 mono ./program.exe当然,我总是可以使用wiringPi或python,但我对这个很好奇,找不到答案。这对我来说没有意义。 /sys/class/gpio/gpio17是一个符号链接(symbolic link),我也尝试访问原始路径但没有运气。

这里可能有什么问题?

最佳答案

猜测:

  • 您先将其取消导出,然后将其导出并立即访问它,过去我在某些 OS e 上遇到过几次问题。 G。删除一个文件并立即重新创建它,添加一个等待时间(不是真正干净的代码,但如果它有效)
  • 使用linux命令“ls -la”或更多
  • 检查文件/文件夹的差异
  • 通过 e 从 C# 调用有效的 shell 命令。 G。工艺类
  • 有几次 Mono 在 Windows 上不像 C# 那样工作,必须找到解决方法
  • 尝试打开这些文件的流并使它们保持打开状态?或者这些文件甚至可以使用管道?
  • 关于c# - Mono 无法访问文件,即使 linux shell 可以在没有 root 的情况下访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382811/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com