Scroll to navigation

getopt_long(3) Library Functions Manual getopt_long(3)

الاسم

getopt_long - يُحلل خيارات سطر الأوامر

المكتبة

مكتبة سي المعيارية (libc، -lc)

موجز

#define _GNU_SOURCE
#include <getopt.h>
int getopt_long(int argc, char *argv[],
           const char *optstring,
           const struct option *longopts, int *longindex);

الوصف

تعمل الدالة getopt_long() مثل getopt(3) باستثناء أنها تقبل أيضًا خيارات طويلة، تبدأ بشرطتين. (إذا كان البرنامج يقبل الخيارات الطويلة فقط، فيجب تحديد optstring كسلسلة نصية فارغة ("")، وليس NULL.) يمكن اختصار أسماء الخيارات الطويلة إذا كان الاختصار فريدًا أو مطابقًا تمامًا لبعض الخيارات المحددة. قد يأخذ الخيار الطويل معاملًا، على الشكل --arg=param أو --arg param.

longopts هو مؤشر للعنصر الأول من مصفوفة من struct option مُصرح عنها في <getopt.h> كـ


struct option {

const char *name;
int has_arg;
int *flag;
int val; };

معاني الحقول المختلفة هي:

هو اسم الخيار الطويل.
هو: no_argument (أو 0) إذا كان الخيار لا يأخذ معاملًا؛ أو required_argument (أو 1) إذا كان الخيار يتطلب معاملًا؛ أو optional_argument (أو 2) إذا كان الخيار يأخذ معاملًا اختياريًا.
يحدد كيفية إرجاع النتائج للخيار الطويل. إذا كان flag هو NULL، فإن getopt_long() تُرجع val. (على سبيل المثال، قد يضبط البرنامج المستدعِي val على محرف الخيار القصير المكافئ.) خلاف ذلك، تُرجع getopt_long() القيمة 0، ويشير flag إلى متغير يُضبط على val إذا عُثر على الخيار، ولكنه يُترك دون تغيير إذا لم يُعثر على الخيار.
هي القيمة المراد إرجاعها، أو تحميلها في المتغير الذي يشير إليه flag.

يجب ملء العنصر الأخير من المصفوفة بالأصفار.

إذا لم يكن longindex هو NULL، فإنه يشير إلى متغير يُضبط على فهرس الخيار الطويل بالنسبة إلى longopts.

نظيره لـ optopt في getopt(3) هو “argv[(optind - 1)]”.

قيمة الإرجاع

انظر getopt(3).

تُرجع getopt_long() أيضًا محرف الخيار عند التعرف على خيار قصير. بالنسبة للخيار الطويل، فإنها تُرجع val إذا كان flag هو NULL، و 0 خلاف ذلك. قيم إرجاع الخطأ و -1 هي نفسها كما في getopt(3)، بالإضافة إلى '?' للمطابقة الغامضة أو المعاملات الزائدة.

البيئة

انظر getopt(3).

السمات

للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).

الواجهة السمة القيمة
getopt_long() سلامة الخيوط غير آمن للمسارات المتعددة (MT-Unsafe) سباق:getopt env

المعايير

GNU.

أمثلة

يوضح البرنامج المثال التالي استخدام getopt_long() مع معظم ميزاتها.

#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{

int c;
int digit_optind = 0;
for (;;) {
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
{"add", required_argument, 0, 0 },
{"append", no_argument, 0, 0 },
{"delete", required_argument, 0, 0 },
{"verbose", no_argument, 0, 0 },
{"create", required_argument, 0, 'c'},
{"file", required_argument, 0, 0 },
{0, 0, 0, 0 }
};
c = getopt_long(argc, argv, "abc:d:012",
long_options, &option_index);
if (c == -1)
break;
switch (c) {
case 0:
printf("option %s", long_options[option_index].name);
if (optarg)
printf(" with arg %s", optarg);
printf("\n");
break;
case '0':
case '1':
case '2':
if (digit_optind != 0 && digit_optind != this_option_optind)
printf("digits occur in two different argv-elements.\n");
digit_optind = this_option_optind;
printf("option %c\n", c);
break;
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c with value '%s'\n", optarg);
break;
case 'd':
printf("option d with value '%s'\n", optarg);
break;
case '?':
break;
default:
printf("?? getopt returned character code 0%o ??\n", c);
}
}
if (optind < argc) {
printf("non-option ARGV-elements: ");
while (optind < argc)
printf("%s ", argv[optind++]);
printf("\n");
}
exit(EXIT_SUCCESS); }

انظر أيضًا

getopt(1), getopt(3), getopt_long_only(3), getsubopt(3)

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

14 فبراير 2026 صفحات دليل لينكس (لم تصدر بعد)