我正在尝试解析 C 程序中的两个选项。
该程序是这样调用的:
./a.out [OPTIONS] [DIRECTORY 1] [DIRECTORY 2]
该程序同步两个目录并有两个选项。(-r)
用于递归同步(文件夹内的文件夹),(-n)
并将文件从本地复制到远程,以防远程中不存在。
Options are:
-r : recursive
-n : copy file if it doesn't exist in remote folder
所以调用:
./a.out -r D1 D2
将递归同步所有文件和目录从D1
到D2
。D1
存在和不存在的文件将D2
被忽略。
并调用:
./a.cout -rn D1 D2
会做同样的事情,但存在D1
和不存在的文件D2
被复制到D2
.
问题是 call与call./a.out -rn
不一样,也不能正常工作,因为is not 。./a.out -nr
./a.out -r -n
(-n)
D1
以下是我实现 main 的方法。
int main(int argc, char** argv) {
int next_option = 0;
const char* const short_options = "hrn:";
const struct option long_options[] = {
{ "help", 0, NULL, 'h' },
{ "recursive", 1, NULL, 'r' },
{ "new", 1, NULL, 'n' },
{ NULL, 0, NULL, 0 }
};
int recursive = 0;
int new = 0;
do {
next_option = getopt_long(argc, argv, short_options, long_options, NULL);
switch(next_option) {
case 'r':
recursive = 1;
break;
case 'n':
new = 1;
break;
case 'h':
print_help();
return 0;
case -1:
break;
default:
print_help();
return -1;
}
} while(next_option != -1);
sync(argv[2], argv[3], recursive, new);
return EXIT_SUCCESS;
}