Использование библиотеки libcurl против вызова curl с помощью system ()

Я хочу, чтобы моя программа загрузила какой-нибудь аудиофайл по ссылке, которую я ей дал, и сохранила.

Я знаю, что это легко сделать в командной строке, используя curl (например: curl -A "Mozilla" "www.example.com" > hello.mp3

Я видел примеры, когда system() использовался для запуска curl (т.е. он выглядел примерно как system(curl -A "Mozilla" "www.example.com" > hello.mp3). Хотя это простое решение, мне оно кажется плохим.

Было бы лучше написать эквивалентный код, используя соответствующую библиотеку (в данном случае libcurl)?

Что вы ребята думаете?

P.S - Это в некотором смысле общий вопрос. Я имею в виду, что существует множество программ командной строки, которые можно запустить с помощью system (), чтобы получить быстрый и простой результат. Вопрос в том, можно ли использовать этот метод для достижения этой цели.


person Shookie    schedule 26.03.2014    source источник


Ответы (1)


Да, было бы лучше использовать libcurl напрямую. Для этого он существует.

Таким образом вы избежите:

  • стоимость системного вызова
  • стоимость создания нового процесса
  • потенциальные ошибки, связанные с безопасностью, в вашем системном вызове

Вызов curl из оболочки просто порождает новую оболочку и новый процесс без всякой причины, а затем в любом случае используйте libcurl внутри этого процесса. Вырежьте среднего человека.

person Lightness Races in Orbit    schedule 26.03.2014