在我的软件中,我为 IPC使用PF_UNIX -socket。
到目前为止,我需要分配一个(预)缓冲区malloc
来准备数据,然后再将其写入write
缓冲区。
现在我想知道:
socket-fd 已经有一个缓冲区,例如。64kb,那么为什么我不能像这样简单地直接准备并将数据写入该缓冲区:
// stupid example-code, don't copy
void *fd_buffer = get_buffer_of_fd(fd)
fd_buffer[0] = 1
fd_buffer[1] = 2
fd_buffer[2] = 3
memcpy(fd_buffer, 5, 5)
...
commit_buffer_of_fd(fd, xbytes); // xBytes is DYNAMIC and not known until this point!!
如果这是可能的,我可以节省复制到预缓冲区、从预缓冲区写入套接字甚至分配预缓冲区的往返过程。
有没有人知道这是否可能?