Пожалуйста, подтвердите, правильно ли я понял ваш вопрос.
Обратите внимание, что происходит, когда вы вызываете систему:
Ваша программа начнет выполнение оболочки;
Эта оболочка будет читать командную строку, которую вы ей передали;
Оболочка запустит программу, которую вы передали системе ()--, в вашем случае это espeak;
Программа получит параметры, которые вы ей передали;
Наконец, программа будет выполнена.
Таким образом, элементы с 1 по 3 (и, возможно, 4 )являются дополнительными при использовании system()по сравнению с запуском той же функциональности в исходном коде.
Если вы найдете способ вызывать ту же функциональность espeakчерез вызов функции в вашей программе, то вы будете иметь более быстрое время отклика.
Я ничего не знаю об espeak, поэтому постараюсь ответить в общих чертах.
Во-первых, не всегда легко иметь ту же функциональность работающей программы в исходном коде. Некоторые программы имеют функциональность, распределенную по множеству опций, и может быть трудно понять это и создать функцию в вашем коде, чтобы делать то, что вы можете легко выразить через командную строку;
Во-вторых, вам нужно будет оценить экономическую выгоду от трансформации. С современными высокопроизводительными процессорами и избытком памяти запуск оболочки, а затем и вашей программы, возможно, не займет слишком много времени. Эти накладные расходы особенно незначительны, если вы начнете espeakвсего несколько раз с относительно длинным текстом.
Я хотел бы иметь программу обертки, которая выполняет данную команду и устанавливает обработчик сигналов так, чтобы это было выполнено, когда команда получает указанный сигнал. Вопрос - это: Есть ли утилита...
Я знаю, что интерфейс системных вызовов реализован на низком уровне и, следовательно, зависит от архитектуры / платформы, а не «универсального» кода. Тем не менее, я не могу четко понять причину, по которой системные вызовы в Linux 32 -...
В include / x86_64-linux-gnu / asm / unistd_64.h я вижу системный вызов с именем tuxcall, #define __NR_tuxcall 184 В man ничего об этом нет tuxcall, за исключением того, что это нереализованная система ...
Я пытаюсь понять как функция, скажем mkdir, работы путем рассмотрения источника ядра. Это - попытка понять внутренности ядра и перейти между различными функциями. Я знаю mkdir...
Связь между виртуальными адресами пользователя и ядра обсуждалась в нескольких вопросах до (ссылок ниже ), но, насколько я понимаю, пользовательский процесс не может ни читать, ни писать в...
Я отладки программы и не совсем уверен, почему я не могу бросить привилегии. У меня есть корневые разрешения через sudo, и я могу назвать setgid / setuid, но операция [IS] не поддерживается. Базовый код для ...
У меня есть приложение, которое читает файл. Давайте назовем это processname и файлом ~/.configuration. Когда processname работает, он всегда читает ~/.configuration и не может быть настроен по-другому. Существуют...