私はこのファイルを作成し、それにスクリプトを書いてからexecを使って実行しようとしています*Cでシェルスクリプトを実行する方法は?
これまでのところ、ファイルを作成してコードを書きましたが、execlは、スクリプトを実行しないでください
int main(int argc, char * argv[]){
char str[] = "#!/bin/bash \n echo 'Hello World!'";
FILE *fp = fopen("script.sh", "w+");
fwrite(str , 1 , sizeof(str) , fp);
fclose(fp);
execl ("/usr/bin/chmod", "chmod", "+x", "script.sh", (char *)0);
execl ("/export/home/redpal/lab4", "script.sh", (char *)0);
return 0;
}
私は各execlを子プロセスに入れるべきですか?
かもしれないそこに唯一の答えが、私はシェルスクリプトを実行した方法で、シェルスクリプトは、独自のプロセスIDを必要とするので、私は 'にfork'使用子プロセスを作成し、親プロセスが子プロセスの完了を待つための 'waitpid'を作成します。そして、if/else型のステートメント内の子プロセスブロック文の中で、私は 'execve'を使ってスクリプトを実行しました。 –
'execl("/bin/sh "、" sh "、" -c "、chr、NULL);'。ディスクに 'script.sh'を書いたり、そのファイルのパーミッションをfutzしたりする必要はありません。 (もちろん、これは**成功する 'exec'-family呼び出しのように、あなたのプログラムを終了/終了させます)。 –
なぜシェルスクリプトを生成し、なぜそれを実行したいのですか?あなたの実際のプログラムは何を意図していますか? –