C言語システムコール-pwrite
pwriteシステムコール
概要
pwriteはオフセットを指定してファイルの書き込みを行います。
lseek実行後にwriteすることと同等の処理となります。
lseekでオフセットを変更すると、システム側のファイルオフセット情報は変化します。
しかし、pwriteでデータの読み込みを行った場合には、システム側のファイルオフセット情報は変化しません。
サンプルプログラム
書き込み対象ファイルの先頭から8Bytesをそのままにして、データを書き込みます。
ファイルが8bytes未満であると、不定文字データを8Bytes出力してしまいます。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
/*!
* @brief sample
* @param[in] filepath ファイルパス名
* @return 0:success/-1:failure
*/
static int
sample_func(char *filepath)
{
int rc = 0;
int fd = 0;
char *buf = NULL;
fd = open(filepath, O_WRONLY);
if(fd < 0){
printf("Error: open() %s: %s\n", strerror(errno), filepath);
return(-1);
}
buf = "data division";
/* 先頭8Bytesを飛ばす */
rc = pwrite(fd, buf, strlen(buf), 8);
if(rc < 0){
printf("Error: pread() %s\n", strerror(errno));
return(-1);
}
return(0);
}
int
main(int argc, char *argv[])
{
int rc = 0;
if(argc != 2){
fprintf(stderr, "Usage: %s <path>\n", argv[0]);
exit(EXIT_FAILURE);
}
rc = sample_func(argv[1]);
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言語システムコール