2014-03-28 4 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는"이 간부하려고하기 때문에 그것의 잘못을 보인다 (./ lib.so) :

은 지금 내가 뭘하려고 오전입니다.

미리 감사드립니다.

답변

0

else 분기에는 exec 명령 만 포함됩니다. perrorexit은 조건부가 아니며 어떤 경우에도 실행됩니다. 그 외에도 사용자 정의 (및 올바르지 않음) strstr 구현이없는 한 문자열 검사가 정상적으로 작동합니다.

올바른 버전

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