android和Linux下getopt的差别

1. Linux下如果找不到相对应的参数,则会跳过继续找下一个

Android下如果找不到则会直接返回-1,跳出来

2. Linux下通过getopt后会把找到的元素放到数组的前面,没找到的往后移动(除了第一个元素:也就是运行的文件):

举例:

//找的参数分别为-i(带参数)  -p(带参数) -r(不带参数) -c(带参数) -s(带参数) -a(带参数) 
while((opt = getopt(argc, argv, "i:p:rc:s:a:")) != -) {
switch (opt) {
case 'i': break;
case 'p': break;
case 'r': break;
case 's': break;
case 'a': break;
default:
exit(EXIT_FAILURE);
}
}

运行并查看结果:

desk@desk-ubuntu:~/CANopenSocket/canopend$ ./app/canopend can0 can1 -i  can2 -c  can3
//下面为运行getopt前参数的打印顺序
:./app/canopend
:can0
:can1
:-i
:
:can2
:-c
:
:can3
//下面为运行getopt后参数的打印顺序,很明显可以知道:没有找到的参数在数组中的顺序往后移动
:./app/canopend
:-i
:
:-c
:
:can0
:can1
:can2
:can3

Android下则不会改变。

上一篇:Linux下通过受限bash创建指定权限的账号


下一篇:script 写在body和head的区别(WEUI中使用swiper删除)