프로젝트의 경우, 명령의 출력을 내 C 프로그램 (실행이라고 함)으로 파이프하여 명령을 실행해야합니다. 본 실행 예C에서 execvpe로 명령 실행하기
: echo ls -lR /usr | ./execute
는 출력 (ls -lR /usr
)을 수행하고 ls -lR /usr
를 실행 내 C 프로그램으로 전달한다.
지침에 따르면 프로그램의 실제 실행을 위해 execvpe()
을 사용해야한다고 생각합니다. 그러나 의미있는 문서를 찾을 수 없으며 이러한 오류가 발생하지 않고 작동하도록 할 수 없습니다.
execute.c: In function ‘main’:
execute.c:98: warning: implicit declaration of function ‘getenv’
execute.c:98: warning: assignment makes pointer from integer without a cast
execute.c:106: warning: implicit declaration of function ‘execvpe’
내 교수는 내가 #include <unistd.h>
에 있다고 말하고, <stdio.h>
내가 한 이는 내 프로그램에 입력을 (내가 한 함) 구문 분석 한 다음이 수행
int main(void) {
char *path;
path = getenv("PATH");
char *envp[] = {path, NULL};
// the initialized array below could change normally.
// below is just an example
char *tests = {"ls", "-lR", NULL};
int ret = execvpe("ls", tests, envp);
if(ret == -1) { printf("error\n"); }
return 0;
}
그 후 execvpe 밝혔다 우 uld가 경로를 정확하게 찾고 모든 것을 실행합니다. 하지만 내가이 경고를 계속 받으면서. 프로그램을 실행하고 즉시 경고를 무시하면 오류가 발생합니다. 누구든지 execvpe
이 어떻게 작동하는지 또는 어떻게 해결할 수 있는지 알고 있습니까? 시스템을 가정
맨 페이지를 보면 인자의 타입이 틀린 것을 볼 수 있습니다 (예 : 두번째 인자는'char * const []','char *'). 또한'tests'는'char * '가 아니며'char * []'입니다. man 페이지는 #include를 정확히 알려줍니다. –
모든 시스템이'execvpe()'를 제공하지는 않습니다 - 예를 들어, Mac OS X는 아닙니다. –
@JonathanLeffler 저는 리눅스 서버에서 ssh를 사용하고 있습니다. 맨 페이지를 더 자세히 살펴보고 char const에 대한 견습생의 조언을 듣겠습니다. – Alex