2015-04-16 5 views
1

У меня есть процесс, попадающий в бесконечный цикл, который вызывает функцию sendto. Я вижу параметры sendto от strace, но я не знаю, как читать сообщение сокета. Любой намек на интерпретацию этого сообщения?Как интерпретировать сообщение сокета sendto Unix?

sendto(10, "\10\0\n\0\1\20\v\251\273D\0\0\4\0", 14, 0, 
    {sa_family=AF_FILE, path="/temp/test_ipc_msg"}, 22) = -1, 
    EAGAIN (Resource temporarily unavailable) 

ответ

1

Попробуйте -xx и -e write 10 варианты strace(1). Это, надеюсь, облегчит интерпретацию полезной нагрузки.

Проблема заключается в том, что принимающая сторона не читает. Поскольку unix(7) сокеты всегда надежны, и на самом деле существует ограничение на количество дейтаграмм в ядре (/proc/sys/net/unix/max_dgram_qlen на Linux), отправитель больше не может писать в сокет.

+0

Хотя я до сих пор не знаю, как читать сообщение сокета '\ 10 \ 0 \ n \ 0 \ 1 \ 20 \ v \ 251 \ 273D \ 0 \ 0 \ 4 \ 0', ваш ответ помог мне найти основная причина этой проблемы - очередь небольших сокетов! После увеличения очереди сокетов эта проблема исчезла. – boyang

Смежные вопросы