/// <summary> /// Creates an array of <see cref="Process"/> components that are associated with process resources on a /// remote computer. These process resources share the specified process name. /// </summary> public static Process[] GetProcessesByName(string processName, string machineName) { ProcessManager.ThrowIfRemoteMachine(machineName); if (processName == null) { processName = string.Empty; } var reusableReader = new ReusableTextReader(); var processes = new List <Process>(); foreach (int pid in ProcessManager.EnumerateProcessIds()) { if (string.Equals(processName, Process.GetProcessName(pid), StringComparison.OrdinalIgnoreCase)) { ProcessInfo processInfo = ProcessManager.CreateProcessInfo(pid, reusableReader, processName); processes.Add(new Process(machineName, false, processInfo.ProcessId, processInfo)); } } return(processes.ToArray()); }
/// <summary> /// Creates an array of <see cref="Process"/> components that are associated with process resources on a /// remote computer. These process resources share the specified process name. /// </summary> public static Process[] GetProcessesByName(string? processName, string machineName) { ProcessManager.ThrowIfRemoteMachine(machineName); if (processName == null) { processName = string.Empty; } var processes = new List<Process>(); foreach (int pid in ProcessManager.EnumerateProcessIds()) { if (Interop.procfs.TryReadStatFile(pid, out Interop.procfs.ParsedStat parsedStat) && string.Equals(processName, Process.GetUntruncatedProcessName(ref parsedStat), StringComparison.OrdinalIgnoreCase) && Interop.procfs.TryReadStatusFile(pid, out Interop.procfs.ParsedStatus parsedStatus)) { ProcessInfo processInfo = ProcessManager.CreateProcessInfo(ref parsedStat, ref parsedStatus, processName); processes.Add(new Process(machineName, false, processInfo.ProcessId, processInfo)); } } return processes.ToArray(); }
public static Process[] GetProcessesByName(string?processName, string machineName) { ProcessManager.ThrowIfRemoteMachine(machineName); processName ??= ""; ArrayBuilder <Process> processes = default; foreach (int pid in ProcessManager.EnumerateProcessIds()) { if (Interop.procfs.TryReadStatFile(pid, out Interop.procfs.ParsedStat parsedStat)) { string actualProcessName = GetUntruncatedProcessName(ref parsedStat); if ((processName == "" || string.Equals(processName, actualProcessName, StringComparison.OrdinalIgnoreCase)) && Interop.procfs.TryReadStatusFile(pid, out Interop.procfs.ParsedStatus parsedStatus)) { ProcessInfo processInfo = ProcessManager.CreateProcessInfo(ref parsedStat, ref parsedStatus, actualProcessName); processes.Add(new Process(machineName, isRemoteMachine: false, pid, processInfo)); } } } return(processes.ToArray()); }