การใช้ไลบรารี libcurl กับการเรียก curl โดยใช้ system()

ฉันต้องการให้โปรแกรมดาวน์โหลดไฟล์เสียงจากลิงก์ที่ฉันให้ไว้และบันทึกไว้

ฉันรู้ว่าสามารถทำได้ง่ายๆ ในบรรทัดคำสั่งโดยใช้ curl (เช่น: curl -A "Mozilla" "www.example.com" > hello.mp3

ฉันเห็นตัวอย่างที่ใช้ system() เพื่อรัน curl (เช่น มันดูเหมือน system(curl -A "Mozilla" "www.example.com" > hello.mp3) แม้ว่านี่จะเป็นวิธีแก้ปัญหาที่ง่าย แต่ก็ดูแย่สำหรับฉัน

จะดีกว่าไหมถ้าเขียนโค้ดที่เทียบเท่าโดยใช้ไลบรารีที่ตรงกัน (ในกรณีนี้คือ libcurl)

พวกคุณคิดอย่างไร?

ป.ล. - นี่เป็นคำถามทั่วไปในแง่หนึ่ง สิ่งที่ฉันหมายถึงคือมีโปรแกรมบรรทัดคำสั่งมากมายที่สามารถรันโดย system() เพื่อให้ได้ผลลัพธ์ที่รวดเร็วและง่ายดาย คำถามคือว่าจะใช้วิธีนี้เพื่อให้บรรลุเป้าหมายได้หรือไม่


person Shookie    schedule 26.03.2014    source แหล่งที่มา


คำตอบ (1)


ใช่ ควรใช้ libcurl โดยตรงจะดีกว่า นั่นคือสิ่งที่มีอยู่เพื่อ

ด้วยวิธีนี้ คุณจะหลีกเลี่ยง:

  • ค่าใช้จ่ายในการโทรของระบบ
  • ค่าใช้จ่ายในการวางไข่กระบวนการใหม่
  • ข้อบกพร่องที่เกี่ยวข้องกับความปลอดภัยที่อาจเกิดขึ้นในการเรียกระบบของคุณ

โดยทั่วไปการเรียกใช้ curl จากเชลล์จะทำให้เกิดเชลล์ใหม่และกระบวนการใหม่โดยไม่มีเหตุผล จากนั้นดำเนินการต่อและใช้ libcurl ภายในกระบวนการนั้นต่อไป ตัดคนกลางออกไป

person Lightness Races in Orbit    schedule 26.03.2014