.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2006-2014, Michael Kerrisk .\" 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 fexecve 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم fexecve \- تنفيذ برنامج محدد عبر واصف ملف .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint fexecve(int \fP\fIfd\fP\fB, char *const \fP\fIargv\fP\fB[], char *const \fP\fIenvp\fP\fB[]);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBfexecve\fP(): .nf منذ glibc 2.10: _POSIX_C_SOURCE >= 200809L قبل glibc 2.10: _GNU_SOURCE .fi .SH الوصف تؤدي الدالة \fBfexecve\fP() نفس مهمة \fBexecve\fP(2)، مع الفارق أن الملف المراد تنفيذه يُحدد عبر واصف ملف، \fIfd\fP، بدلاً من اسم مسار. يجب أن يكون واصف الملف \fIfd\fP مفتوحًا للقراءة فقط (\fBO_RDONLY\fP) أو مع العلم \fBO_PATH\fP ويجب أن يكون لدى المستدعي صلاحية تنفيذ الملف الذي يشير إليه. .SH "قيمة الإرجاع" لا تعود استدعاء ناجح للدالة \fBfexecve\fP() أبدًا. عند الخطأ، تعود الدالة بقيمة \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء الأخطاء مماثلة لتلك الخاصة بـ \fBexecve\fP(2)، مع الإضافات التالية: .TP \fBEINVAL\fP \fIfd\fP ليس واصف ملف صالحًا، أو \fIargv\fP يساوي NULL، أو \fIenvp\fP يساوي NULL. .TP \fBENOENT\fP العلم close\-on\-exec مضبوط على \fIfd\fP، و \fIfd\fP يشير إلى سكريبت. انظر الأخطاء. .TP \fBENOSYS\fP لا يوفر النواة استدعاء النظام \fBexecveat\fP(2)، ولا يمكن الوصول إلى نظام الملفات \fI/proc\fP. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBfexecve\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير POSIX.1\-2008. .SH التاريخ glibc 2.3.2. .P .\" glibc commit 43ffc53a352a67672210c9dd4959f6c6b7407e60 على لينكس مع إصدارات glibc 2.26 وما قبلها، تُنفذ \fBfexecve\fP() باستخدام نظام الملفات \fBproc\fP(5)، لذا يجب أن يكون \fI/proc\fP موصولاً ومتاحًا وقت الاستدعاء. منذ glibc 2.27، إذا دعمت النواة الأساسية استدعاء النظام \fBexecveat\fP(2)، فتُنفذ \fBfexecve\fP() باستخدام ذلك الاستدعاء، مع فائدة أن \fI/proc\fP لا يحتاج إلى أن يكون موصولاً. .SH ملاحظات الفكرة وراء \fBfexecve\fP() هي السماح للمستدعي بالتحقق (مجموع اختباري) من محتويات ملف قابل للتنفيذ قبل تنفيذه. مجرد فتح الملف، وحساب المجموع الاختباري للمحتويات، ثم تنفيذ \fBexecve\fP(2) لن يكون كافيًا، لأنه بين الخطوتين، يمكن استبدال اسم الملف، أو بادئة دليل من اسم المسار (على سبيل المثال، بتعديل هدف رابط رمزي). لا تخفف \fBfexecve\fP() مشكلة أن \fIمحتويات\fP ملف يمكن تغييرها بين حساب المجموع الاختباري واستدعاء \fBfexecve\fP()؛ لذلك، الحل هو ضمان أن صلاحيات الملف تمنع تعديله من قبل مستخدمين خبيثين. .P الأسلوب الطبيعي عند استخدام \fBfexecve\fP() هو ضبط العلم close\-on\-exec على \fIfd\fP، بحيث لا يتسرب واصف الملف إلى البرنامج المنفذ. هذا الأسلوب طبيعي لسببين. أولاً، يمنع استهلاك واصفات الملف دون داع. (البرنامج المنفذ عادة لا يحتاج إلى واصف ملف يشير إلى البرنامج نفسه.) ثانيًا، إذا استُخدمت \fBfexecve\fP() بشكل تكراري، فإن استخدام العلم close\-on\-exec يمنع استنفاد واصفات الملف الذي ينتج عن حقيقة أن كل خطوة في التكرار ستتسبب في تمرير واصف ملف إضافي إلى البرنامج الجديد. (لكن انظر الأخطاء.) .SH العلل إذا كان \fIfd\fP يشير إلى سكريبت (أي، إنه ملف نصي قابل للتنفيذ يسمي مفسر سكريبت بسطر أول يبدأ بالحروف \fI#!\fP) وضُبط العلم close\-on\-exec لـ \fIfd\fP، فتفشل \fBfexecve\fP() مع الخطأ \fBENOENT\fP. يحدث هذا الخطأ لأنه بحلول وقت تنفيذ مفسر السكريبت، يكون \fIfd\fP قد أُغلق بالفعل بسبب العلم close\-on\-exec. وبالتالي، لا يمكن ضبط العلم close\-on\-exec على \fIfd\fP إذا كان يشير إلى سكريبت، مما يؤدي إلى المشاكل الموصوفة في الملاحظات. .SH "انظر أيضًا" \fBexecve\fP(2), \fBexecveat\fP(2) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .