从 C# 和单声道启动进程时内存不足
Out of memory when starting process from c# and mono
我正在使用安装了 Debian 的嵌入式 linux 开发板 (Atmel AT91SAM)。有一个单声道应用程序 运行,它通过调用 cat 并通过 bash。一段时间后,我得到一个“内存不足”异常并且输出没有设置一段时间,在它之后 "recovers itself" 几秒钟后。
- 这样设置 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
.
来跳过进程 Class 和与其关联的任何内存 management/garbage 集合
在您定义 OnTimer1Event
方法的 Class 中,将定义添加到 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\");
}
我正在使用安装了 Debian 的嵌入式 linux 开发板 (Atmel AT91SAM)。有一个单声道应用程序 运行,它通过调用 cat 并通过 bash。一段时间后,我得到一个“内存不足”异常并且输出没有设置一段时间,在它之后 "recovers itself" 几秒钟后。
- 这样设置 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
方法的 Class 中,将定义添加到 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\");
}