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

パラメーターはコマンド文字列なので、その行はセミコロンで終わる必要があります。また、引用符をエスケープする必要があります。

おすすめ記事