LINUX.ORG.RU

Использование system() VS Использование библиотек

 , ,


1

3

Всем привет!

Интересует ваше мнение. Допустим, хочу написать простую утилиту с GUI на GTK+ на Plain C. Будет отправка файлов на сервер: открываем программу, выбираем в маленьком окошке файл, нажимаем «Отправить» в ответ получаем ссылку на файл на удалённом сервере. Всё просто.

Можно подключить библиотеку cURL, а можно дёргать тотже cURL через system(). Какой подход предпочтительнее и почему?

Помоему, если требуется написать много подобных утилит, как обёртки для простых системных вызовов, то проще использовать system(). Или это считается ужасной практикой и за такое нужно будет гореть в аду?



Последнее исправление: winston3d (всего исправлений: 1)
Ответ на: комментарий от zudwa

я говорю про свой опыт. за много лет я пришла к выводу, что Code::Blocks меня устраивает для всех моих разработок. он представляет из себя настраиваемый конструктор всевозможных конфигураций и это как раз объективный пример, когда софт вызывает внешние бинарники. потому что это такой специфический софт, который является связкой разных инструментов для программиста.

что касается «обычных» утилит, у которых выполняемая задача не изменяется в зависимости от настроек юзера, нет смысла делать каждый вызов снаружи и тем самым лишний раз дёргать систему и отчаянно тормозить. сам смысл писания софта на С в том, чтобы он работал оптимально. если писать на баше - да, будут нужны вызовы. на С так не пишут.

Iron_Bug ★★★★★
()
Ответ на: комментарий от zudwa

QtCreator

qmake может запуститься отдельно от IDE. Не знаю, как надо извратиться, чтобы собиралось только с его помощью.

f1u77y ★★★★
()
Ответ на: комментарий от d_a

Только вот использование '/' в качестве разделителя - platform dependent. На винде еще и locale dependent

CatsCantFly
()
Ответ на: комментарий от d_a
errno != EEXIST

Однако надо еще проверить, что оно именно *директория* а не другой вид файла.

man 2 mkdir

EEXIST pathname already exists (not necessarily as a directory). This includes the case where pathname is a symbolic link, dangling or not.

A dangling symlink — вообще отдельная песня.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Это не конечный итог с какими-то 123 критериями, а просто суждение о предпочтениях, которое уже звучало итт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.