我试图判断他们给我的参数是一个共享库还是一个命令,我命令用该特定命令加载库或exec。
现在我要做的是:
if(strstr(argv[1],".so")!=NULL){
//Load library etc...
}
else
exec(argv[1],&argv[1],NULL);
perror("exec");
exit(1);
但这似乎是错误的,因为如果论证是" ./ lib.so"它尝试exec(./ lib.so)。
提前谢谢。
答案 0 :(得分:0)
您的else
分支仅包含exec
命令。 perror
和exit
是无条件的,无论如何都会被执行。除此之外,字符串检查正常工作(除非您有自定义(和不正确)strstr
实现)。
正确的版本是
else {
exec(argv[1],&argv[1],NULL);
perror("exec");
exit(1);
}