2012年12月5日水曜日

特殊なデバイス

/dev/null
書き込み全て破棄、読み取りは常にEOF

/dev/zero
書き込み全て破棄、読み取りは永遠にnull文字(\0)

/dev/full
書き込みは常にエラーerrno=ENOSPC(デバイス容量FULL)、読み取りは永遠にnull文字(\0)

・異常時対応の動作テストをする際に有用
・null,zeroデバイスは書き込み無視するので、不要なI/Oを破棄する際、無用のオーバーヘッドがない手頃な方法


/dev/random (暗号用。長時間I/Oブロックの可能性アリ)
/dev/urandom (普通のアプリはこちら)
乱数生成デバイス


#include <stdio.h>
int main()
{
int value;
FILE *fptr;
unsigned int w_i;
fptr = fopen("/dev/urandom", "r");
if(fptr==NULL) { return -1; }
for(w_i=0; w_i<20; w_i++) {
fread( &value, sizeof(value), 1, fptr);
printf("%2d value = 0x%08X %u\n", w_i, value, value);
}
fclose(fptr);
return 0;
}



0 件のコメント:

コメントを投稿