Вызов функции C (libcanberra) из оболочки - PullRequest
2 голосов
/ 11 декабря 2011

Я бы хотел воспроизвести системный звук в Git Hook для веселого проекта .

Существует стандарт freedesktop и библиотека C ( libcanberra ) для системных звуков, но нет исполняемого файла, поставляемого с libcanberra. Существует ли простой способ вызова метода libcanberra ca_context_play из сценария оболочки без запуска полного интерпретатора perl или python? И если нет, то как бы я к нему с Perl / Python?

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Почему бы вам просто не написать простую программу на C, которая вызывает функцию через то, что вы указываете в командной строке?

2 голосов
/ 11 декабря 2011

Вы не можете вызывать функцию C из оболочки (если вы не разрабатываете плагины для нескольких оболочек, например zsh-, принимая их; но тогда вы не зададите свой вопрос таким образом.)

Вы можете запустить программу только из оболочки, и вы можете написать ее, как предложил анонимный пользователь112358132134.

В Linux есть несколько программ для воспроизведения некоторых звуков. На моем компьютере Debian программное обеспечение sox предоставляет команду play, которая делает это.

0 голосов
/ 11 августа 2017

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

Командная строка выполняет только машинный код.Когда вы видите, что он выполняет текст (сценарий оболочки или сценарий Python), он просто вызывает другую программу (например, виртуальную машину Python), которая может выполнять текст.Таким образом, язык компиляции (например, C или C ++) не может быть выполнен напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...