C言語システムコール-readv
readvシステムコール
概要
readvは複数のバッファを使用する読み込みを行います。
readを複数のバッファ指定できるように機能拡張されたシステムコールといえます。
固定文字列長データに対してパース処理を省きたい場合などに利用できます。
サンプルプログラム
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/uio.h>
/*!
* @brief sample
* @return 0:success/-1:failure
*/
static int
sample_func(void)
{
int rc = 0;
char buf1[4];
char buf2[6];
char buf3[8];
struct iovec vector[3];
vector[0].iov_base = buf1;
vector[0].iov_len = sizeof(buf1);
vector[1].iov_base = buf2;
vector[1].iov_len = sizeof(buf2);
vector[2].iov_base = buf3;
vector[2].iov_len = sizeof(buf3);
rc = readv(0, vector, 3);
if(rc < 0){
printf("Error: readv() %s\n", strerror(errno));
return(-1);
}
printf("buf1=%s\n", buf1);
printf("buf2=%s\n", buf2);
printf("buf3=%s\n", buf3);
return(0);
}
int
main(int argc, char *argv[])
{
int rc = 0;
if(argc != 1){
fprintf(stderr, "Usage: %s\n", argv[0]);
exit(EXIT_FAILURE);
}
rc = sample_func();
if(rc != 0) exit(EXIT_FAILURE);
exit(EXIT_SUCCESS);
}
関連ページ
- C言語システムコール-open
- C言語システムコール-creat
- C言語システムコール-close
- C言語システムコール-read
- C言語システムコール-write
- C言語システムコール-lseek
- C言語システムコール-truncate
- C言語システムコール-rename
- C言語システムコール-mkdir
- C言語システムコール-rmdir
- C言語システムコール-link
- C言語
- C言語システムコール