getopt_long.chtml
#include
#include
char *l_opt_arg;
char* const short_options = "nsm:";
struct option long_options[] = {
{ "name", 0, NULL, 'n' },
{ "surname", 0, NULL, 's' },
{ "message", 1, NULL, 'm' },
{ 0, 0, 0, 0},
};
int main(int argc, char *argv[])
{
int c;
while((c = getopt_long (argc, argv, short_options, long_options, NULL)) != -1)
{
switch (c)
{
case 'n':
printf("My name is satellite.\n");
break;
case 's':
printf("My surname is yuan.\n");
break;
case 'm':
l_opt_arg = optarg;
printf("Send message: %s!\n", l_opt_arg);
break;
}
}
return 0;
}
运行结果:
satellite@ubuntu:/home/share$ gcc -o test getopt_long.c
satellite@ubuntu:/home/share$ ./test --name
My name is satellite.
satellite@ubuntu:/home/share$ ./test --surname
My surname is yuan.
satellite@ubuntu:/home/share$ ./test --message
./test: option '--message' requires an argument
satellite@ubuntu:/home/share$ ./test --message hello
Send message: hello!
satellite@ubuntu:/home/share$ ./test -ns
My name is satellite.
My surname is yuan.
satellite@ubuntu:/home/share$ ./test -nsm hello
My name is satellite.
My surname is yuan.
Send message: hello!
satellite@ubuntu:/home/share$ ./test -ns -m hello
My name is satellite.
My surname is yuan.
Send message: hello!