2010-09-24 3 views
2

Я планирую написать программу, которая вызывает вызовы cdrecord. (Я новичок, новичок пытается «поцарапать зуд»). Программа будет написана на C++. Я определил, что мне нужно иметь возможность запускать cdrecord, чтобы это работало.Использование библиотеки программ, которая содержит основную функцию

cdrecord написан на C. Однако документация по его использованию из командной строки. Исходный код включает в себя основную функцию, которая включает приложение командной строки, которое является таким же, как и для кода I wand cdrecord.

мне интересно, должен ли я:

  1. Изменение основной на другое имя, а затем включить исходный файл и назовите его, когда мне нужно.
  2. Вызвать скомпилированную программу, используя команду system().
  3. Что-то еще.

ответ

2

system(), как правило, отличный способ, просто будьте осторожны, чтобы не вводить произвольные ненадежные значения в строку, которую вы выполняете. Например, если у вас есть веб-интерфейс, где с параметром padsize по умолчанию установлено значение 0, а кто-то вводит не число, а «0; rm -rf *;», убедитесь, что вы не вызываете «cdrecord padsize=0; rm -rf *; ...».

Другое дело, что система может быть медленнее запускать второй отдельный процесс - это может иметь значение, если вы запускаете эту программу сотни раз и каждый раз, когда ей нужно всего несколько миллисекунд работы, но в вашем случае накладные расходы на запуск затмеваются вероятным временем выполнения cdrecord.

2

Использование системы() позволит вам не беспокоиться о коде cdrecord. Лично я бы включил только код в свою собственную программу, если бы у меня были очень актуальные проблемы, требующие, чтобы я включил его. Я думаю, что система() - это путь.

http://www.cplusplus.com/reference/clibrary/cstdlib/system/

1) Есть ли какая-либо конкретная причина, вы скорее включить его в своем собственном коде, а не просто использовать его, как это?

2) У вас есть право изменить код и включить его в свою собственную программу?

+0

Спасибо. В основном меня беспокоило, что система создаст плохой код. – Portablejim

+0

Nah. В этом случае я бы пошел с 'system()'. – Sagar