Shell Program, чтобы просто открыть драйвер символа и подождать

Я подозреваю, что grub2 -mkconfig сортирует ядра в обратном порядке, предполагая, что они в основном содержат монотонно увеличивающиеся номера версий. Итак, начните подбирать теги в соответствии с этим соглашением.

5
10.12.2018, 15:14
2 ответа

В Борне -как снаряды,

exec 3< "$device"

Открывает устройство на файловом дескрипторе 3 оболочки.

Это было бы более или менее эквивалентно C:

fd = open(device, O_RDONLY);
if (fd < 0) handler_error(...);
if (fd != 3) { dup2(fd, 3); close(fd); }

(ksh93также делает fcntl(3, F_SETFD, FD_CLOEXEC)на этом fd ).

Чтобы закрыть:exec 3<&-

В zsh, ksh93и bashэквивалент fd = open(device, O_RDONLY)можно также записать как:

exec {fd}< "$device"

Где дескриптор файла будет первым свободным выше 9 и сохранен в $fd.

Чтобы закрыть:exec {fd}<&-

Замените <на >вместо O_WRONLY|O_CREAT|O_TRUNCи <>вместо O_RDWR|O_CREATи >>вместо O_WRONLY|O_CREAT|O_APPEND.

zshтакже имеетsysopenвстроенную функцию (в модуле zsh/system), где вы можете точно указать флаги.

Обратите внимание, что в оболочках, совместимых с POSIX, execявляется специальной встроенной командой , если файл не может быть открыт, это фатальная ошибка, когда он не -интерактивный (завершает сценарий. ). Вы можете отключить это с помощью команды command.

if command exec 3< "$device"; then
  do-what-you-need-to-do
else
  handle-the-error-yourself
fi
12
27.01.2020, 20:32
while sleep 3600; do :; done >/dev/your_watchdog

Я понял (из echoи touchрабочих и catсбоев ), что устройство должно быть открыто в режиме только для записи.

2
27.01.2020, 20:32

Теги

Похожие вопросы