Этот вопрос не имеет большого смысла.
Вы пишете код на основе ядра? В этом случае вы можете получить pid текущей задачи с помощью макроса «current», который указывает на структуру задачи текущей задачи (которая содержит член с pid). Это будет работать только в том случае, если код вашего ядра выполняется в контексте, где «текущая задача» имеет смысл (то есть не прерывание, тасклет и т. Д.).
Если вы пишете код пользовательского пространства, не должно быть причин, по которым вы не можете вызвать getpid, который является библиотечным вызовом из библиотеки C, определенной в unistd.h (или чем-то, что он включает), который выполняет системный вызов. Если есть такая причина, пожалуйста, объясните.
Выполнение системного вызова в Linux не представляет особой сложности, но включает в себя специфический для архитектуры код, который вы не хотите писать.