我在使用 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/