gpt4 book ai didi

c# - 从 C# 和单声道启动进程时内存不足

转载 作者:太空狗 更新时间:2023-10-29 12:13:22 24 4
gpt4 key购买 nike

我正在使用安装了 Debian 的嵌入式 Linux 板 (Atmel AT91SAM)。有一个正在运行的单声道应用程序,它通过使用 bash 启动一个新的系统进程调用 cat 来定期(比如每 500 毫秒)打开/关闭 GPIO 的输出。一段时间后,我收到“内存不足”异常,并且在几秒钟后“自行恢复”后,暂时没有设置输出。

  • 这样设置 pioC10 是不是一个坏主意?如果是这样,还应该如何我设置值文件?
  • 是否会发生此内存异常,因为目前无法访问 GPIO?
  • 是否有一种干净的方法来处理进程,或者是在方法自动关闭时完成?

    private void OnTimer1Event(object source, ElapsedEventArgs e)
    {
    alternateBlinkTimer1.Stop();
    alternateBlinkTimer2.Start();
    try
    {
    var processStartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = "-c \"echo 1 > /sys/class/gpio/pioC10/value\"" };
    System.Diagnostics.Process process = new Process();
    process.StartInfo = processStartInfo;
    process.Start();
    }
    catch (Exception err)
    {
    log.Error(err.Message);
    }
    }

最佳答案

您可以尝试通过直接使用 libc 的 system 来跳过进程类和任何与之关联的内存管理/垃圾收集。

在您要定义 OnTimer1Event 方法的类中,将定义添加到 system:

   [DllImport ("libc")]
private static extern int system (string exec);

然后你可以:

private void OnTimer1Event(object source, ElapsedEventArgs e)
{
alternateBlinkTimer1.Stop();
alternateBlinkTimer2.Start();
system("echo 1 > /sys/class/gpio/pioC10/value\");
}

关于c# - 从 C# 和单声道启动进程时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540619/

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