2014-03-28 37 views
0

我想告诉他们给我的参数是共享库还是命令,我命令使用该特定命令加载库或exec。共享库(.so)和命令之间的隔离

现在我所要做的是:

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

您的else分支仅包含exec命令。 perrorexit是无条件的,并将在任何情况下执行。除此之外,字符串检查工作正常(除非你有自定义(并且不正确)strstr实现)。

正确的版本是

else { 
    exec(argv[1],&argv[1],NULL); 
    perror("exec"); 
    exit(1); 
}