Необработанное MIDI-устройство ALSA фактически не начинает считывать данные с оборудования до тех пор, пока не будет вызвана snd_rawmidi_read ()
.
Это означает, что вы должны вызвать snd_rawmidi_read ( )
достаточно рано, иначе первые байт (ы) ответа могут быть потеряны.
Самый безопасный способ сделать это - вызвать snd_rawmidi_read ()
до отправки запроса. (См., Например, амиди .)
foo= bar
: перед выполнением команды bar
назначьте foo
пустым. Правильный способ: foo=bar
Без пробела после имени переменной и присвоенного значения.
В команде оболочки linux/unix, когда вы набираете foo=bar
, вы помещаете строку bar в переменную foo
. Для проверки вы можете ввести echo $foo
, что должно вернуть bar
это то, что содержит переменная foo
Когда вы набираете foo= bar
с пробелом, интерпретатор оболочки ничего не поместил в переменную foo и дескриптор bar как команду приложения через переменную PATH. Поскольку оболочка не нашла команду bar в переменной PATH, а вы используете дистрибутив Ubuntu, система спрашивает, хотите ли вы установить приложение bar. Это просто всплывающее сообщение, когда приложение не найдено. Вы можете проверить переменную PATH с помощью этой команды: echo $PATH
. Подробнее об этой системной переменной Здесь
Когда вы делаете foo= bar
, вы назначаете пустую строку переменной окружения foo
, а затем выполняете команду bar
. Его можно использовать для передачи переменных среды в новое выполнение.
Пробел — это символ-разделитель (используемый для разделения вещей): добавление пробела делает его двумя: foo=
и bar
. Первое — это задание, второе — указание bash найти файл и выполнить его. Первый не является обязательным, поэтому вы обычно видите только второй. Второй не является необязательным: если вы видите только присваивание, оно делает что-то немного другое, оно присваивается переменной оболочки (не переменной среды, если перед ней не стоит export
).
Это синтаксис :Переменные Bash инициализируются значением, которое следует сразу после оператора присваивания =
. Просто так оно и есть...
При выполнении foo= bar
вы назначаете пустую строку переменной foo
и затем выполняете команду bar
.