Intereting Posts
opensuse: невозможно установить собственный графический драйвер fglrx Является ли библиотека vdso shared (linux-vdso.so) библиотекой, которая содержит объектный код ядра (системные вызовы)? переименовывать (реверсировать) каталоги unix с фамилиями и именами людей, разделенными запятыми Friendly отключить ssh при выключении? Подведение общих строк в разных файлах Bash работает с несколькими программами и закрывается Как отменить калькулятор электронных таблиц? Есть ли способ определить, что препятствует заставке? Должно ли расширение файла происходить до того, как команда увидит его аргумент? Прочитайте переменную с «read» и сохраните обратную косую черту, введенную пользователем Какой PID входит в раздел systemd PIDFile при создании демона сценария оболочки? Yum: старый удаленный пакет, конфликтующий с новым пакетом для установки Как рассчитать средние запросы за секунды, используя awk или sed в журналах Apache Как печатать IP / MASK из списка? Как предотвратить закрытие приложения python в Linux?

Знание того, когда write () на serial port завершил передачу данных

Мне нужно синхронизировать значение вывода ввода-вывода с записью в serial port из пространства пользователя (потому что я еще не смог сделать это из пространства ядра – см. Мой другой вопрос ). Мой код (без проверки ошибок) выглядит следующим образом:

char buf[3] = {'U','U','U'}; int fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY); // supposed to be blocking // fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK); <-- makes no difference FILE *f = fopen("/sys/class/gpio/gpio200/value", "w"); // the relevant IO // set IO fprintf(f, "1"); fflush(f); // send data write(fd, buf, sizeof(buf)); // unset IO fprintf(f, "0"); fflush(f); 

Поведение заключается в том, что IO быстро переключается на 1 и возвращается в начале записи. Другими словами, write() возвращает задолго до того, как данные были фактически переданы в сеть.

Здесь есть надежда?

    Для устройств tty вы должны использовать tcdrain() в дескрипторе файла.