c# - 让 Mono 运行时运行进程

标签 c# linux process mono

我在使用 Mono 运行时、Ubuntu 服务器和 C# 代码运行进程时遇到问题。

我正在尝试使用以下方式获取进程列表:

Process.GetProcesses().ToList<Process>().ForEach((s) => {
            Console.WriteLine(s.ProcessName);
        });

我得到以下列表:(已恢复)

rsyslogd perl perl mono smbd sshd bash sudo

所以,我想我遇到了与执行 Java Jar 类似的问题。我能看到单声道 控制台正在运行,但我无法让他的子进程运行,所以我无法开发另一个 充当监视器的应用程序。我需要检查应用程序是否一直在运行。

我设法通过/bin/bash 命令实现了它:

Process.Start("/bin/bash"," -c 'ps -aux | grep Watcher'");

所以我得到了一个有效的输出:

root 25597 0.0 0.4 23540 9132 ? Sl Sep26 0:07 mono /var/lib/sarg/Watcher.exe root 29226 0.0 0.0 5184 1112 pts/0 S+ 15:04 0:00 /bin/bash -c ps -aux | grep Watcher root 29228 0.0 0.0 4392 820 pts/0 S+ 15:04 0:00 grep Watcher

如您所见,这一行:

/var/lib/sarg/Watcher.exe root

重申我的进程正在运行,但这不是很优雅,我必须解析 输出。

如果没有其他选择,我会解析它,但也许有一个,但我不知道。

最佳答案

Process.GetProcessesbyName 内部调用 Process.GetProcesses(".") 然后将结果过滤为与请求的 processName 匹配的结果

问题是进程被命名为“mono”而不是“watcher”...

您永远不会使用“watcher”按名称找到进程。您必须获取 ProcessesByName("mono")。

关于c# - 让 Mono 运行时运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19051698/

相关文章:

c - Malloc( ) - 在新页面请求或重新循环先前分配的内存之间做出决定

linux - 内存充足的 Oom-killer(内存不足)(?!) - inotify

c - 隐藏 Execve 的终端输出

c# - 如何获取正在运行的 HTML Windows 8 应用程序的名称(不是 WWHOST)

c# - 如何将一段时间分组为年度? (将时间跨度分成年度)

c# - 使用 Imagemagick.NET 去除透明度

c# - ITextSharp,定位文本

c# - 转换压缩 COBOL

linux - 用空格和特殊字符替换文本

c# - 是否可以在 WPF 的单独进程中隔离某些控件?