在Linux中使用system(“command”)

时间:2013-01-19 12:57:15

标签: c linux web-crawler wget

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

我想在C中开发一个网络抓取工具,并希望使用 wget 从网址中获取内容? 我应该使用系统(“wget ...”)吗?

1 个答案:

答案 0 :(得分:10)

无论使用何种编程语言,调用系统shell都应该是最后的选择,因为:

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

当我们将一些讨厌的perl代码移植到移动设备时,同样的wget对我们来说是一个问题。虽然从Linux到Linux,我们发现“标准”wget有一些交换机BusyBox也不支持端口wget所需,后来甚至grep就好像perl不会有自己的模式搜索。在那之后,我完全相信更好的没有。