ntdll과 interop'ing하여 Windows에서 하위 프로세스 목록을 가져 오는 코드는 다음과 같습니다. Linux에 'NtQueryInformationProcess'와 동일한 기능이 있나요? (pbi.InheritedFromUniqueProcessId와 같은) 지정된 프로세스의 부모 프로세스 ID가 나옵니까? Mono를 통해 Linux에서 실행되는 코드가 필요하므로 코드가 Windows와 거의 동일하게 유지되도록 부모 프로세스 ID를 얻는 부분 만 변경하면되기를 바랍니다. 리눅스에서 주어진 프로세스의 모든 아이들을 찾는C#/mono : Windows 및 Linux에서 하위 프로세스 목록 가져 오기
public IList<Process> GetChildren(Process parent)
{
List<Process> children = new List<Process>();
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
ProcessBasicInformation pbi = new ProcessBasicInformation();
try
{
uint bytesWritten;
NtQueryInformationProcess(p.Handle,
0, ref pbi, (uint)Marshal.SizeOf(pbi),
out bytesWritten); // == 0 is OK
if (pbi.InheritedFromUniqueProcessId == parent.Id)
children.AddRange(GetChildren(p));
}
catch
{
}
}
return children;
}
감사!/proc 파일 시스템을 생각하지 마라! 시스템 호출 만 찾고 있었지만이 솔루션은 좋은 점이 있습니다. – johnrl