사용자가 c 문자열을 입력 할 수있는이 프로그램을 수행하고 있으며 사용자가 입력 한 문자열이 Linux 명령인지 확인하는 기능을 만들고 싶습니다. 전의. 사용자 : cat 출력 : cat은 명령입니다.
사용자 : hello 출력 : hello는 명령이 아닙니다.
기타...
나는 execvp를 사용할 수 있다고 들었지만 명령이 존재하는지 알아 내기 위해 명령을 실행하고 싶지 않습니다. 그냥 존재하는지 확인하고 싶습니다.
나는 리눅스가 특정 명령의 위치를 출력하는 whereis 명령을 어떻게 활용할 수 있다고 생각했지만 c에서 이것을 구현하는 방법을 모릅니다.
나는 또한 stat ()가 작동 할 수 있다고 들었지만 그 마르코가 디렉토리와 파일에 대해서만 변경되기 때문에 어떻게 해야할지 모르겠습니다. 그래서 명령은 고양이 파일과 같은가요? 그렇다면 다음과 같이 stat를 실행할 때 :
stat (cmd, & buff);
cmd의 경로가 필요하지 않습니까?
전반적으로 사용자가 c를 사용하여 Linux에서 유효한 명령을 입력했는지 확인하고 솔루션을 상대적으로 안정적으로 만들 수 있습니까?
Linux which
명령과 C 기능 의 조합을 사용할 수 있습니다 popen
.
char testCmd[100];
char usrCmd[100];
strcpy(testCmd, "which ");
strcpy(usrCmd, "cat hello.txt");
strncat(testCmd, usrCmd, 93);
char path[100];
FILE *p = popen( testCmd , "r");
if(p ) {
while(fgets(path, sizeof(path), p) != NULL) {
printf("%s", path);
}
}
which
명령을 전달하는 인수의 경로를 반환 cat hello.txt
도 일 것으로 보인다. 출력 리디렉션과 같은 불쾌한 것을 예상하는 경우 사용자 입력의 첫 번째 단어 만 which
.
which
명령에 대한 경로 (경로에있는 경우) 또는 개행 (명령을 찾을 수없는 경우)을 인쇄합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다