Является ли system () злом?

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

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

  1. system () менее гибок. (Меня устраивает)
  2. Он не предлагает никакого контроля над выполняемой командой. (Меня устраивает, мне просто нужно возвращаемое значение из сценария)
  3. Это не совсем платформенно-независимая функция. (Это было бы проблемой. Мне бы очень хотелось увидеть пример, где он ведет себя по-разному на разных платформах)
  4. Это проблема безопасности. (Опять же, это может быть проблемой. Может ли кто-нибудь привести пример потенциальной проблемы безопасности с system () ?)
  5. Есть другие проблемы?
16
задан Matvey Aksenov 10 November 2011 в 21:00
поделиться