Como carregar explicitamente o interpretador de shell em um programa C

1

Eu quero criar um script executável que não seja legível / gravável

No entanto, como um intérprete precisa ler este arquivo, não é possível fazê-lo diretamente. Portanto, eu queria saber se poderia carregar explicitamente um interpretador em um programa em C junto com meu script.

Isso me permitiria definir a permissão do programa C de acordo com minhas necessidades.

    
por Dilletante 01.04.2013 / 10:02

1 resposta

3

Você pode chamar scripts shell a partir do aplicativo C usando system() function:

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.

Exemplo:

#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;
}

Em exibição:

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

Lembre-se de que o argumento é uma string de comando, portanto, você precisa terminar as linhas com ponto e vírgula. Você também tem que escapar de aspas.

    
por 02.04.2013 / 23:31