Windows専用のプログラムを構築しているとすれば、なぜsystem()
への呼び出しは嫌われますか?私がC++でプログラミングを始めて以来、 "システムに触れないでください"という言葉は私が大変聞いたことでした。私はその原則を従順に守ってきましたが、それについては何が悪いですか?system()については何が悪いですか?
答えて
システムコールの中に入れるものは、プログラムを実行するOSによって異なります。だから完全に移植性がありません。また、多くのことが間違っている可能性があります。あなたはただ空中に命令を投げているだけで、すべてがうまくいくことを願っています。エラー処理(たとえば、実行するプログラムが存在しないか、PATHが正しく設定されていないか、権限がないなど)は非常に困難であり、不可能です。
これ以外にも、ほとんどの場合コメント(実際には「ほとんど」、99.999%など)に記載されているように、system
を使用する必要はありません。
"これは完全に移植性がありません。"システム("");私にはかなり可愛い – user1233963
std::system()
は、あなたが望むことを実行するコマンドを信頼する必要があります。この仮定が正当化されているかどうかを検証する方法はありません。たとえば、PATH環境変数の値が異常な場合、標準セットアップとは異なるプログラムが実行される可能性があります。
std::system()
への呼び出しの動作はシステムによって異なります。現在のところ、アプリケーションが他のオペレーティングシステムで実行する必要がないという要件であっても、この要件は変更される可能性があります。 std::system()
は、より移植性の高い方法で(特に初心者で)達成できる目的でよく使用されることを考慮すると、ここでプラットフォームの依存性を導入する必要はありません。
system()
は、OSのコマンドインタープリタを別のプロセスとして起動します。たまには、呼び出し元のプロセス内で直接同じ結果を達成し、さらにそれを制御できるネイティブAPIがあります。
- 1. OverlappingInstancesについて何が悪いですか?
- 2. INT%ebxの何が悪いですか?
- 3. Django Herokuアプリケーションエラー。何が悪いですか?
- 4. xsl:for-eachについてはどうして悪いですか?
- 5. 悪いマークアップとは何ですか?
- 6. Systemクラスはjavaで何を表していますか?
- 7. 私はCSSで画像に何か悪いがあります
- 8. ハッシュマップの何が悪いです
- 9. epmdポートが開いている最悪のケースは何ですか?
- 10. HTMLの出力が悪いものは何ですか?
- 11. "public/system /"の "system"フォルダの目的は何ですか?
- 12. Visual Studio Team SystemとTeam Foundation Serverの違いは何ですか
- 13. Oracle SYSとSYSTEMの違いは何ですか?
- 14. /system/appと/ data/appの違いは何ですか?
- 15. Cの中のpopen()とsystem()の違いは何ですか
- 16. 誰かがこれについて何か説明できますか? (悪意のある)
- 17. Bisonスタイル:自分のスタックが悪いですか?グローバルは悪いですか?
- 18. このデータ系列で何が悪いのですか?
- 19. Rubyではリターンステートメントが悪いですか?
- 20. ユニバーサルハッシングはモジュロハッシュよりも悪いですが、何が問題なのですか?
- 21. プロジェクトオイラー問題17 - 何が悪いですか?
- 22. 小さなメッセージパーサー、何が悪いですか?
- 23. このPHPログインページの何が悪いのですか?
- 24. 何が悪いですか、System.Data.SqlClient.SqlException:無効な列名 'tbl_rules_rulID'。
- 25. はユニットテストのアプローチが悪いですか?
- 26. MVCはどこが悪いですか?
- 27. TextMateについて何がすばらしいですか?
- 28. パフォーマンスに悪いですか?
- 29. Unixのプログラミング何が悪いの文
- 30. このstatic_castについては何が危険ですか?
さらに、人々が 'system()'に入れたいと思っていることは、通常、スクリーンをクリアするか、一時停止するようなものです。これは、実際のコードでもっとうまくやっていくことをやるための、怠惰で最適な方法として使われる傾向があります。 –
あなたが間違っていて、非安定化されたユーザー入力を渡すと、アプリケーションを開いてインジェクションの脆弱性を突き止めることができます。攻撃者はアプリケーションと同じ権限で任意のコマンドを実行できます。 –
何をしているのか分かっているなら、何でもしてください。 – deepmax