您应该通过命令行使用 curl 还是包含库?

Should you use curl through commandline or include the library?

我觉得这一个很难比另一个更合理。我在 Whosebug 上看到很多人都在做这两种变体。有些只是从他们的程序外部调用 cURL 控制台命令(例如:curl "content=hello world" -X POST https://example.com -H "charset=UTF-8")。和其他人导入库并在程序内部以编程方式调用它。

所以我的问题是关于未来即将开展的项目,包含库并设置所有这些是否值得。或者从命令行调用 cURL 并读取它的响应只是一个更聪明的选择?

出于好奇,为什么不是每个人都做其中一种变体?为什么有些人使用控制台命令而其他人使用包含库,以后可能会有一些陷阱吗?

libcurl 具有无法轻易表达为命令行的广泛功能。如果您正在构建需要同时高效处理许多传输的东西,或者如果您需要接收 HTTP2 推送资源等高级功能,您会更喜欢它。

curl 更易于使用。如果你只需要下载或上传一些东西,你会更喜欢它。

仅供参考 您可以将 --libcurl argument 传递给 curl 以查看如何在 libcurl 中实现 curl 命令行。

我以前也有同样的顾虑,是使用 libcurl 还是简单地调用 command-line。

Command-line工具curl使用起来比较简单。但是会产生一个子进程,如果需要在父子进程之间交换数据,则需要 IPC。

虽然,使用 libcurl 比较困难,因为您需要阅读 API 参考资料并选择您需要的函数,然后安排它们工作。但回报是 libcurl 更灵活、更强大。

我的经验是在C++程序中用system(curl)发送JSON数据。该程序是 single-way 通信。通过使用 curl 命令行,我很快就完成了预期的工作。但是如果我选择使用libcurl,我相信我会在写一行代码之前阅读几天文档。

还有一个我的故事。询问是否使用ffmpeg工具或它的库是一样的。我的项目是从视频中提取帧,然后将它们提供给其他子程序。所以我使用 libavcodec/libavformat 左右来完成我的工作。这确实花费了更多的精力,但好在阅读互联网上的教程就足够了。

尽可能使用图书馆。不仅适用于 cURL,而且适用于一般情况。

您绝对应该避免 system() 调用或创建启动外部命令行应用程序的单独进程。这会增加开销,并可能导致在不同平台之间移植代码时出现问题。

libcurl 也有很多功能。命令行是广泛的,但 C API 更强大。

使用 libcurl 需要比调用 curl 命令行应用程序更多的代码行,但这是正确的做法。

从 C 调用 curl 命令行应用程序通常是出于懒惰或作为节省时间的快捷方式。