public override bool IsWorkingInThisEnvironment(string forFile)
 {
     if (OsUtils.IsUnixOs())
     {
         return(base.IsWorkingInThisEnvironment(forFile));
     }
     return(false);
 }
Esempio n. 2
0
        private static Process ParentProcess(this Process process)
        {
            if (OsUtils.IsUnixOs())
            {
                // TODO: find a way to implement this in mono on a mac/linux machine
                return(null);
            }
            var        parentPid           = 0;
            var        processPid          = process.Id;
            const uint TH32_CS_SNAPPROCESS = 2;
            // Take snapshot of processes
            var hSnapshot = CreateToolhelp32Snapshot(TH32_CS_SNAPPROCESS, 0);

            if (hSnapshot == IntPtr.Zero)
            {
                return(null);
            }

            var procInfo = new PROCESSENTRY32 {
                dwSize = (uint)Marshal.SizeOf(typeof(PROCESSENTRY32))
            };


            // Read first
            if (Process32First(hSnapshot, ref procInfo) == false)
            {
                return(null);
            }

            // Loop through the snapshot
            do
            {
                // If it's me, then ask for my parent.
                if (processPid == procInfo.th32ProcessID)
                {
                    parentPid = (int)procInfo.th32ParentProcessID;
                }
            } while (parentPid == 0 && Process32Next(hSnapshot, ref procInfo)); // Read next

            if (parentPid <= 0)
            {
                return(null);
            }

            try
            {
                return(Process.GetProcessById(parentPid));
            }
            catch (ArgumentException)
            {
                //Process with an Id of X is not running
                return(null);
            }
        }
Esempio n. 3
0
 public override bool IsWorkingInThisEnvironment(string forFile) => OsUtils.IsUnixOs() && base.IsWorkingInThisEnvironment(forFile);