.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Rickard E. Faith .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getpid 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getpid، getppid \- جلب معرّف العملية .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBpid_t getpid(void);\fP \fBpid_t getppid(void);\fP .fi .SH الوصف تُعيد \fBgetpid\fP() معرف العملية (PID) للعملية المستدعِية. (يُستخدم هذا غالبًا بواسطة الروتينات التي تولد أسماء ملفات مؤقتة فريدة.) .P تُعيد \fBgetppid\fP() معرف العملية للأب للعملية المستدعِية. سيكون هذا إما معرف العملية التي أنشأت هذه العملية باستخدام \fBfork\fP()، أو، إذا كانت تلك العملية قد انتهت بالفعل، معرف العملية التي أُعيدت تبعية هذه العملية إليها (إما \fBinit\fP(1) أو عملية "subreaper" عُرّفت عبر عملية \fBPR_SET_CHILD_SUBREAPER\fP في \fBprctl\fP(2)). .SH الأخطاء تنجح هذه الدوال دائمًا. .SH الإصدارات في Alpha، وبدلاً من زوج من استدعاءات النظام \fBgetpid\fP() و \fBgetppid\fP()، يُوفّر استدعاء نظام واحد \fBgetxpid\fP()، والذي يُعيد زوجًا من معرّف العملية PID ومعرّف عملية الأب. تتعامل دوال الغلاف \fBgetpid\fP() و \fBgetppid\fP() في glibc مع هذا بشفافية. انظر \fBsyscall\fP(2) لمزيد من التفاصيل المتعلقة بربط السجلات. .SH المعايير POSIX.1\-2024. .SH التاريخ 4.3BSD، SVr4، POSIX.1\-1988. .SS "الاختلافات بين مكتبة C والنواة" .\" The following program demonstrates this "feature": .\" .\" #define _GNU_SOURCE .\" #include .\" #include .\" #include .\" #include .\" #include .\" #include .\" .\" int .\" main(int argc, char *argv[]) .\" { .\" /* The following statement fills the getpid() cache */ .\" .\" printf("parent PID = %ld\n", (intmax_t) getpid()); .\" .\" if (syscall(SYS_fork) == 0) { .\" if (getpid() != syscall(SYS_getpid)) .\" printf("child getpid() mismatch: getpid()=%jd; " .\" "syscall(SYS_getpid)=%ld\n", .\" (intmax_t) getpid(), (long) syscall(SYS_getpid)); .\" exit(EXIT_SUCCESS); .\" } .\" wait(NULL); .\"} من الإصدار 2.3.4 من glibc وحتى الإصدار 2.24 (بما في ذلك)، خَبّأت دالة الغلاف في glibc لـ \fBgetpid\fP() معرّفات العمليات PIDs، بهدف تجنب استدعاءات النظام الإضافية عندما تستدعي العملية \fBgetpid\fP() بشكل متكرر. عادة ما كانت هذه الخبيئة غير مرئية، ولكن تشغيلها الصحيح اعتمد على الدعم في دوال الغلاف لـ \fBfork\fP(2) و \fBvfork\fP(2) و \fBclone\fP(2): إذا تجاوز التطبيق أغلفة glibc لاستدعاءات النظام هذه باستخدام \fBsyscall\fP(2)، فإن استدعاء \fBgetpid\fP() في الابن سيُعيد قيمة خاطئة (لنكون دقيقين: سيُعيد PID الخاص بالعملية الأب). بالإضافة إلى ذلك، كانت هناك حالات يمكن أن تُعيد فيها \fBgetpid\fP() قيمة خاطئة حتى عند استدعاء \fBclone\fP(2) عبر دالة غلاف glibc. (لمناقشة إحدى هذه الحالات، انظر BUGS في \fBclone\fP(2).) علاوة على ذلك، كان تعقيد كود الخبيئة مصدرًا لبعض الأخطاء البرمجية داخل glibc على مر السنين. .P .\" commit c579f48edba88380635ab98cb612030e3ed8691e .\" https://sourceware.org/glibc/wiki/Release/2.25#pid_cache_removal .\" FIXME . .\" Review progress of https://bugzilla.redhat.com/show_bug.cgi?id=1469757 بسبب المشاكل المذكورة أعلاه، أُزيلت خبيئة PID منذ الإصدار 2.25 من glibc: تستدعي استدعاءات \fBgetpid\fP() دائمًا استدعاء النظام الفعلي، بدلاً من إعادة قيمة مخبأة. .SH ملاحظات إذا كان أب المستدعِي في مساحة أسماء PID مختلفة (انظر \fBpid_namespaces\fP(7))، تُعيد \fBgetppid\fP() القيمة 0. .P من منظور النواة، يُعرف PID (المشترك بين جميع الخيوط في عملية متعددة الخيوط) أحيانًا أيضًا باسم معرف مجموعة الخيوط (TGID). وهذا يتناقض مع معرف خيط النواة (TID)، وهو فريد لكل خيط. لمزيد من التفاصيل، راجع \fBgettid\fP(2) ومناقشة علم \fBCLONE_THREAD\fP في \fBclone\fP(2). .SH "انظر أيضًا" \fBclone\fP(2), \fBfork\fP(2), \fBgettid\fP(2), \fBkill\fP(2), \fBexec\fP(3), \fBmkstemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3), \fBcredentials\fP(7), \fBpid_namespaces\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .