идентификатор / идентификатор процесса анализа из / proc, идентификаторы потоков

Когда я обрабатываю идентификаторы процессов из / proc, очевидно, что каждый поток процесса получает свой собственный идентификатор. И я понимаю, что все потоки в том же процессе могут быть собраны из /proc/${pid}/task/ .

Но мой вопрос: могу ли я предположить, что первый идентификатор в списке (самый низкий номер один?) Является основным потоком процесса?

Цель, которую я в конечном счете пытаюсь сделать, – написать быстрый скрипт ps в python без использования подпроцесса или вызова оболочки.

Вы не можете предположить, что идентификаторы процессов (и идентификаторы потоков) могут быть повторно использованы, поэтому заказ не гарантируется. (Это маловероятно для недавно загруженной 64-битной системы, но вы увидите ее на машинах с большими перерывами).

Вы можете получить идентификатор группы потоков (который является идентификатором процесса) из /proc/${id}/status . Это в строке Tgid: nnnnn .

Пример:

 $ cat /proc/8288/status Name: vlc State: S (sleeping) Tgid: 8281 // main vlc process id Pid: 8288 // thread id