Изучение процессов
Помимо полного списка всех выполняющихся на конкретной машине процессов, статический метод Process.GetProcessById() позволяет получать информацию и по конкретному объекту Process за счет указания ассоциируемого с ним идентификатора (PID). В случае запроса несуществующего PID генерируется исключение ArgumentException.
Набор потоков представляется в виде строго типизованной коллекции ProcessThreadCollection, в которой содержится определенное количество отдельных объектов ProcessThread. Свойство Threads в System.Diagnostics.Process предоставляет доступ к классу ProcessThreadCollection, некоторые наиболее интересные члены которого перечислены ниже:
Позволяет получить информацию о текущем приоритете потока
Позволяет получить уникальный идентификатор потока
Позволяет указать предпочитаемый процессор для выполнения данного потока
Позволяет получить или задать уровень приоритета потока
Позволяет указать процессоры, на которых может выполняться соответствующий поток
Позволяет узнать, по какому адресу в памяти операционная система вызывала функцию, приведшую к запуску данного потока
Позволяет узнать, когда операционная система запустила поток
Позволяет узнать текущее состояние данного потока
Позволяет узнать, сколько всего времени данный поток использовал процессор
Позволяет узнать причину, по которой поток находится в состоянии ожидания
Прежде чем двигаться дальше, необходимо четко уяснить, что тип ProcessThread не является сущностью, применяемой для создания, приостановки и уничтожения потоков в .NET. Он скорее представляет собой средство, позволяющее получать диагностическую информацию по активным потокам Windows внутри выполняющегося процесса.
Getting the running process own pid in C / C++
How to get the running process’ pid in C / C++?
In C and C++, you can call the getpid() library function which is a function from the POSIX library.
getppid() returns the process ID of the calling process.
An example C program to get self process ID getpid.c :
Build and run it:
2 comments:
Please update the reuslt section with actual result.
$ gcc getpid.c -o s && ./s
ppid: 7108
But printf is
printf(“pid: %lun”, pid);
How come it prints “ppid” for print statement of “pid”.
Hello, thanks for the idea but getpid() returns an int so the format in printf is abnormal : %lun should be just %d (and the n in lun is probably a typo)
the error :
error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘pid_t’