2

system()を使用して C の C プログラムからシェル コマンドを呼び出すことは推奨されますか?

C で Web クローラーを開発し、 wgetを使用して URL からコンテンツを取得したいですか? system(" wget ...")を使用して行う必要がありますか?

4

1 に答える 1

10

プログラミング言語に関係なく、システム シェルを呼び出すことは、他に何も機能しない場合の最後の手段にする必要があります。

  • 他のオペレーティング システムではほぼ確実に動作しません。
  • エラー処理は実際には複雑です (エラー ストリームをキャプチャして解析する必要があります)。多くの場合、これは行われず、すべてのエラーが無視されます。
  • このようなアプリケーションを別のプラットフォームに移植する場合は、呼び出されたすべてのツールも移植する必要があります。

厄介な perl コードをモバイル デバイスに移植したときも、同じwgetことが問題でした。Linux から Linux への切り替えだけで、"標準"wgetには BusyBox がサポートしていないスイッチがいくつかあることを発見したためwget、同様に移植する必要がgrepあります。その後、私は完全に確信しています。

于 2013-01-19T13:08:08.723 に答える