| 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;
};
معاني الحقول المختلفة هي:
- الاسم
- هو اسم الخيار الطويل.
- has_arg
- هو: no_argument (أو 0) إذا كان الخيار لا يأخذ معاملًا؛ أو required_argument (أو 1) إذا كان الخيار يتطلب معاملًا؛ أو optional_argument (أو 2) إذا كان الخيار يأخذ معاملًا اختياريًا.
- flag
- يحدد كيفية إرجاع النتائج للخيار الطويل. إذا كان flag هو NULL، فإن getopt_long() تُرجع val. (على سبيل المثال، قد يضبط البرنامج المستدعِي val على محرف الخيار القصير المكافئ.) خلاف ذلك، تُرجع getopt_long() القيمة 0، ويشير flag إلى متغير يُضبط على val إذا عُثر على الخيار، ولكنه يُترك دون تغيير إذا لم يُعثر على الخيار.
- 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);
}
انظر أيضًا¶
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 14 فبراير 2026 | صفحات دليل لينكس 6.18 |