C 프로그램에서 쉘 인터프리터를 명시적으로 로드하는 방법

C 프로그램에서 쉘 인터프리터를 명시적으로 로드하는 방법

나는실행 가능한 스크립트이것은 아니다읽기/쓰기 가능

그러나 인터프리터가 파일을 읽어야 하기 때문에 이를 직접적으로 수행하는 것은 불가능합니다. 그래서 내 스크립트와 함께 인터프리터를 C 프로그램에 명시적으로 로드할 수 있는지 궁금합니다.

이를 통해 내 필요에 따라 C 프로그램의 권한을 설정할 수 있습니다.

답변1

system()다음 함수를 사용하여 C 애플리케이션에서 쉘 스크립트를 호출 할 수 있습니다 .

system()은 /bin/sh -c 명령을 호출하여 command에 지정된 명령을 실행하고 명령이 완료된 후 반환합니다. 명령 실행 중에 SIGCHLD는 차단되고 SIGINT 및 SIGQUIT는 무시됩니다.

예:

#include <stdlib.h>

int main(int argc, char *argv[]) {

    char* command = "\
for i in 1 2 3 4 5;\
    do echo \"$i\"; \
done";

    system(command);
    return 0;
}

달리기:

$ gcc test.c -o test
$ chmod 100 test
$ ./test
1
2
3
4
5

매개변수는 명령 문자열이므로 해당 줄은 세미콜론으로 끝나야 합니다. 또한 따옴표를 이스케이프 처리해야 합니다.

관련 정보