Nп/п : 29 из 56
От : Denis Sovkov 2:5020/570.77 29 ноя 23 22:02:08
К : All 29 ноя 23 22:10:02
Тема : Непонятки с read и write
----------------------------------------------------------------------------------
@MSGID: 2:5020/570.77 65678bae
@CHRS: CP866 2
@TZUTC: 0300
@TID: hpt/lnx 1.4.0-sta 16-02-06
Hello everybody!
Ситауция следующая: имеем программу, программа открывает /dev/ttyUSB0
с флагом O_RDWR - можно как записывать, так и читать. В программе два
параллельных потока - один раз в 3 секунды записывать текстовыю строку в
открытый дескриптор, другой считывает оттуда присланную строку ПОБАЙТНО внешним
устройством тогда, когда сможет и выводит на экран. Проблема в том, что во
входные данные попадает часть того, что пишется в дескриптор, причем
независимо от времени. Пробовал защищать дескриптор мютексом - не помогло,
мусорные данные все равно попадают на вход (кстати, нужные данные при этом
тоже считываются). Пробовал ставить флаг O_DSYNC - тоже не помогло.
Мозможно, нужно очищать буфер (какой и как?) сразу после отправки строки. В
потоках буферы используются разные - для каждого потока свой. Имею ввиду
очистку выходного буфера, который пишет write. ЧЯДНТ? Куда копать?
Denis
--- GoldED+/LNX 1.1.5-b20180707
* Origin: ----> Default GoldED Origin <---- (2:5020/570.77)
SEEN-BY: 469/122 4500/1 5010/352 5019/40 5020/290
545 556 570 715 837 848 921
SEEN-BY: 5020/1042 2992 4441 12000 5022/2 128
5023/24 5030/500 1081 5034/13
SEEN-BY: 5055/73 5057/19 5061/15 5075/128 6056/1
@PATH: 5020/570 715 4441