在Linux中使用system("command")

Dee*_*eyi 2 c linux wget web-crawler

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

我想在C中开发一个Web爬虫,并希望使用wget从URL获取内容?我应该使用系统("wget ...")吗?

h22*_*h22 10

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

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

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

  • 那么system()函数被包含在标准库中,作为以独立于系统的方式调用OS的一种方式.System()是调用系统的唯一可移植方式*.字符串参数的内容当然是系统相关的,但system()libray函数不是. (2认同)