Windows は非 Cygwin 環境で writev に似たものを提供しますか?
理想的には、回答には次のようなウィンドウの実際の例が含まれます。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/uio.h>
int main() {
struct iovec iov[2];
char blah[][20] = { "mickey", " mouse" };
int fd = open ("/tmp/mice.txt", O_WRONLY | O_CREAT);
iov[0].iov_base=blah[0];
iov[1].iov_base=blah[1];
iov[0].iov_len=iov[1].iov_len=6;
writev(fd, iov, 2 );
close(fd);
}
答えは、システム コールを使用して問題にアプローチする方法です。具体的には、個々のバッファーを単一の大きなバッファーにコピーして書き込みを実行することを避けたいと考えています。また、結果の書き込みは、バッファリングされた IO を実行する fwrite のようなものではなく、単一の大きな書き込み要求である必要があります。
編集:12年8月13日
Scatter Gather I/O へのリンクは、主に TCP/IP ネットワーキングに関連しているようです (実際には winsock が間違っています)。writefilegather という別の提案は、非常に特殊な形式でファイルを書き込むためのソリューションです。つまり、writev は iov コンテナー (メモリの任意のブロック) を使用して書き込みますが、writefilegather はページ テーブル サイズに合わせて調整された固定バッファーを使用します。