让单声道运行时运行进程

本文关键字:运行时 运行 进程 声道 单声道 | 更新日期: 2023-09-27 18:32:59

我在运行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'");

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

根 25597 0.0

0.4 23540 9132 ? SL 9月26日 0:07 单声道 /var/lib/sarg/Watcher.exe 根 29226 0.0 0.0 5184 1112 pts/0 S+ 15:04 0:00/bin/bash -c ps -aux |grep 观察者根 29228 0.0 0.0 4392 820 分/0 S+ 15:04 0:00 grep 观察者

如您所见,这一行:

/

var/lib/sarg/Watcher.exe root

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

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

让单声道运行时运行进程

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

问题是该进程被命名为"单声道"而不是"观察者"......

您永远不会使用"观察者"按名称找到该过程。 你必须得到ProcessesByName("mono"(。

尝试使用 Process.GetProcessesByName("Watcher") ,这似乎对我有用。

在测试了一些代码并使用:

Proccess[] Proc =Process.GetProcessesByName("mono");

我终于用他的堆栈跟踪发现了一个例外:

Unhandled Exception: System.NotImplementedException: The requested feature is not implemented.
  at System.Diagnostics.Process.get_SessionId () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_SessionId ()
  at ProcWatch.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.NotImplementedException: The requested feature is not implemented.
  at System.Diagnostics.Process.get_SessionId () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_SessionId ()
  at ProcWatch.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

未实现请求功能。因此,无法使用 .NET 框架恢复单声道子进程。我正在使用 shell 命令来做到这一点:

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

看看问题:在GNU/Linux上获取由MONO执行的进程

该解决方案查找所有进程名称 MONO 或 CLI,然后读取进程的命令行。命令行提供单声道执行的应用程序的名称

获取由 GNU/Linux 上的单声道执行的进程

干杯