그래서, 저는 유닉스 미니 쉘을 만들고 있습니다. 그리고로드 블록에 왔습니다. I는 기본 기능을 수행 할 수 있어야하므로 I는 함수했다 : 그것은 문자열 배열 (제 인 명령 및 나머지 인수이다) 얻어C Map String to Function
int exec_if_built_in(char **args)
한다. 기본 제공되지 않는 명령의 경우 간단히 execvp와 같은 것을 사용하지만 첫 번째 문자열을 함수에 매핑하는 방법을 찾아야합니다. 두 배열, 문자열 중 하나 및 해당 함수 포인터를 다른 생각하고 있었다. 그러나 이러한 기능 중 많은 부분이 다르기 때문에 (반환 및 다른 사안을 수락)이 방법은 작동하지 않습니다. 또한 이름 속성과 함수 포인터 속성을 가진 구조체 배열을 만들려고 생각했지만 사용하려는 함수의 다양한 특성으로 인해 다시는 작동하지 않습니다.
그래서 문자열의 입력을 기반으로 함수를 실행하는 가장 좋은 방법은 무엇입니까? 문자열을 특정 함수에 매핑하는 방법은 무엇입니까? 함수 포인터에 익숙하지 않아 뭔가 빠져있을 수 있습니다.
는 경우가 테이블 중심의 접근 방식은 부적절 너무 다양하면 아마 다음 도움말 :
그 ptr-ptr에 대한 경계는 어떤 종류입니까? 나는. 거기에 argc가 있습니까? 나는 명령이 매개 변수를 취하고 당신이 그것들을 유효화하기를 원한다면 조만간에 esp가 필요할 것이라고 생각한다. – WhozCraig
나는 당신이 묻고있는 것에 약간 혼란 스럽다. 쉘에 전달할 수있는 문자 수는 1024 자로 제한됩니다. 사용자가 입력 한 문자열을 문자열 배열로 분해합니다. 함수를 잘 만들 수 있습니다. 함수를 호출하는 방법을 찾아야합니다. – robins35