При звонке Cap’n Proto’s writeMessageToFd(pipe, message);
Я получаю эту ошибку:
terminate called after throwing an instance of 'kj::ExceptionImpl'
what(): src/kj/io.c++:323: failed: ::writev(fd, current, iov.end() - current): Bad file descriptor; fd = -1
stack: 0x7efead69cf89 0x7efead6a0c7f 0x7efead6a2648 0x7efead6a24f7 0x7efead8f40b7 0x7efead8f42a4 0x402c7b 0x402a36 0x4028df 0x7efeabd50e50 0x7efeabd5181a 0x7efeabd52669 0x7efeabd52a03 0x7efeabd52bb2 0x402865 0x4027ab
Вы на самом деле не задавали вопрос, но я могу сказать вам из этого исключения, что вам не следовало пытаться вызвать writeMessageToFd с недопустимым дескриптором файла (текст исключения говорит вам об этом «Bad file descriptor; fd = -1») ,
У вас есть два варианта:
— не вызывайте эту функцию, если pipe == -1 (вероятно, лучше всего, вы действительно должны были проверить, что вызов, вернувший pipe, не вернул -1)
— окружить ваш вызов writeMessageToFd () try / catch и обработать исключение соответствующим образом
Вы должны действительно пойти с первым и соответственно обработать значение -1 в трубе.