LINUX.ORG.RU

Можно ли так открывать /dev/ttyS1 ?


0

0

1. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | O_NONBLOCK)) - открывает СОМ порт

2. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | ~O_NONBLOCK)) - не открывает СОМ порт, пишет ошибку, что файл существует.

Как правильно открыть СОМ порт, с блокированием чтением?

★★

>Как правильно открыть СОМ порт, с блокированием чтением?

open("/dev/ttyS1",(O_RDWR | O_NOCTTY);

>2. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | ~O_NONBLOCK)) - не открывает СОМ порт, пишет ошибку, что файл существует.

ты спав чи нi?

cvv ★★★★★
()

$ grep -r O_NONBLOCK /usr/include
/usr/include/sys/fcntl.h:#define O_NONBLOCK 0x00000004 /* no delay */

подумайте, что получится для выражения "x = y | ~O_NONBLOCK". в битах :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от binr

> open("/dev/ttyS1",(O_RDWR | O_NOCTTY & ~O_NONBLOCK)) > открывает, но read() не блокируется, возращает 0 :(

ok, первый шаг вы прошли успешно. шаг второй: думаем над приоритетами операций в языке C :)

// wbr

klalafuda ★☆☆
()
2 марта 2006 г.

o_O смеяцо или плакать даж незнаю...

по умолчанию все открывается в blocking режиме, следовательно если НЕ УКАЗЫВАТЬ O_NONBLOCK or O_NDELAY то открыватся будет так как надо...

З.Ы. как уже народ объяснил ~O_NONBLOCK побитное инвертирование O_NONBLOCK, вот и подумай что получица в итоге :)

Ex ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.