1

プログラム内でmakeファイルやその他のgcc関連のものを実行できるシステムを作成したいのですが、基本的にはgccを使用してプログラム内でコンパイルします。やりたいことをすべてバッチファイルに書き込んだら、プログラム内からそのバッチファイルを実行する必要があります。

System()では、セキュリティやその他のさまざまな理由から、通話は非常に悪いと誰もが言っています。System()したがって、私がc ++を使用していることを考えると、バッチファイルを実行するための良い代替手段は何でしょうか。必要に応じて、クロスプラットフォームの代替手段が必要です。

ありがとう

4

1 に答える 1

2

これらはUnix/Linuxに関連付けられており、使用方法によっては、システムよりも安全ではないことは間違いありませんが、forkおよび一連の呼び出しを使用することを検討できます。execl

すべてのプラットフォームがこれを行うための異なる独自の方法を持っているという理由だけで、これを行うための一般的なクロスプラットフォームの方法を見つけることができるかどうかは非常に疑わしいです。また、実行しようとしているスクリプトは、プラットフォームごとに異なる必要があり、ディレクトリパスなどを指定する方法が異なる場合があります。

私の提案は、最初に次の質問にどのように答えるかを自問することです。これが私の主な関心事です。

  • 偶発的/意図的な誤用を防ぐにはどうすればよいですか?
  • 実行しているスクリプト内のエラーまたは成功ステータスをどのように検出しますか?
  • 依存関係をどのように提供しますか?たとえば、スクリプトAは、スクリプトBを実行する前に、完全かつ正しく実行する必要があります。
  • 成功と失敗の状態をどのように報告しますか。

私の最後の質問は、なぜこれをC++で実行したいのかということです。特定の理由はありますか?当然、私はC ++のエバンジェリストですが、もっと過激なことに着手しない限り、Perl、Python、場合によってはBashなどのスクリプト言語を使用した方がよいと思います。

于 2012-08-01T15:02:36.107 に答える