Вы даете write()
аргумент данных ACK
, который является указателем на int
. Это, вероятно, не то, что вы имеете в виду. В зависимости от порядка байтов компьютера, на котором вы работаете, это означает, что write()
будет «видеть» буфер, содержащий символы { 6, 0, 0, 0 }
(младший порядок) или { 0, 0, 0, 6 }
(старший порядок) Это предполагает, что sizeof (int) == 4
верно, при необходимости настройте другие размеры, проблема остается.
Скорее всего, вместо этого вы должны создать буфер unsigned char
. Кроме того, если вы сделали звонок так:
int wrote = write(fd, ACK, sizeof ACK);
printf("Wrote %d bytes\n", wrote);
Вы бы получили прямой отзыв. Вы должны проверить что-то вроде этого, чтобы убедиться, что запись действительно удалась.