[英]Linux C getopt ignore after the first unspecified argument
我想讓程序完成“execvp(argv [1],argv + 1);” 如果第一個參數未定義,但getopt解析所有以“ - ”開頭的參數。 如何在第一個未定義的參數后忽略所有參數? 這可能使用getopt嗎? 目前,我有代碼:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>
void print_usage() {
printf("Usage: here print usage\n");
}
int main(int argc, char *argv[]) {
int option = 0;
char user[32]={0}, command[50]={0};
while ((option = getopt(argc, argv,"c:u:h")) != -1) {
switch (option) {
case 'c' : strcpy(command,optarg);
break;
case 'u' : strcpy(user,optarg);
break;
case 'h' : print_usage();
exit(EXIT_SUCCESS);
break;
default:
print_usage();
exit(EXIT_SUCCESS);
}
}
if(strlen(user)!=0) {
if (strlen(command)!=0)
printf("execute %s for %s\n",command,user);
else
printf("please specify command\n");
}
else {
if (strlen(command)!=0)
printf("please specify user\n");
else if (argc > 2)
printf("execute %s for everyone\n",argv[1]);
}
return 0;
}
當你執行時,我得到了:
./thisprogram ls -l
./thusprogram: invalid option -- 'l'
我想這樣做;
./thisprogram ls -l /
razem 52
lrwxrwxrwx 1 root root 7 05-31 20:40 bin -> usr/bin
drwxr-xr-x 5 root root 4096 10-21 22:44 boot
drwxr-xr-x 19 root root 3160 11-02 17:10 dev
等等...但我不知道。 問候K.
遇到未知參數時,請停止解析。
int done = 0;
while (!done && (option = getopt(argc, argv,"c:u:h")) != -1) {
switch (option) {
...
default:
done = 1;
break;
}
}
(或者,如果你願意,用case '?':
而不是default:
case,因為getopt在遇到未知參數時返回'?')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.