2

是否建议使用system()从 C 中的 C 程序调用 shell 命令?

我想用 C 开发一个网络爬虫并想使用wget从 URL 中获取内容?我应该使用system(" wget ...")吗?

4

1 回答 1

10

不管是哪种编程语言,调用系统 shell 确实应该是最后的手段,因为:

  • 它几乎肯定不会在其他操作系统下工作。
  • 错误处理实际上很复杂(您需要捕获和解析错误流)。通常这只是没有完成,所有错误都被忽略。
  • 如果您将这样的应用程序移植到另一个平台,则所有调用的工具也必须移植。

wget当我们将一些讨厌的 perl 代码移植到移动设备时,同样是一个问题。虽然只是从 Linux 到 Linux,但我们发现“标准”wget有一些 BusyBox 不支持的开关,因此也需要移植wget,后来甚至grep好像 perl 没有自己的模式搜索。在那之后,我完全相信最好不要。

于 2013-01-19T13:08:08.723 回答