🛠️

C言語のログ(logging:ロギング)処理(9)

1 min read

通信データをバイナリでログ出力したログファイルを読込む

前回、通信データをバイナリでログ出力しました。

https://zenn.dev/open_sesame/articles/3a71858f10046f
こういったジャーナルデータは、電文解析やテスト電文で使用するので読込処理が必要になってきます。
なので、バイナリファイルの読込み処理を書くべし。

プログラム

// main関数 getBinaryLog() を呼出すところ抜粋
int main(void) {

	getBinaryLog("./application.log");
	
	return EXIT_SUCCESS;
}
// バイナリログファイル読込関数 のみ抜粋
void getBinaryLog(char *fileName)
{
	int	ret;		// 戻り値
	char	dateTime[32];	// 日時
	FILE	*fp;		// ファイルディスクプリタ
	int	cnt;

	char 	buff[5];
	unsigned char	*data;

	// データ領域取得
	data = malloc(1024);

	ret = pthread_mutex_lock(&mutexBinaryLog);

	fp = NULL;
	// ファイル読込
	fp = fopen(fileName, "rb");

	if(fp == NULL){
		// ファイルオープンエラー
		// ファイルパス/ファイル名が不正の場合
		// パーミッションエラーの場合
		;
	}
	else{
		// 日時文字列クリア
		memset(dateTime, 0x0, sizeof(dateTime));
		// データサイズ文字列クリア
		memset(buff, 0x0, sizeof(buff));
		// データクリア
		memset(data, 0x0, sizeof(1024));
		// 日時読込
		fread(dateTime, sizeof(unsigned char), 26, fp);
		// データサイズ読込
		fread(buff, sizeof(unsigned char), 4, fp);
		// データ読込
		fread(data, sizeof(unsigned char), atoi(buff), fp);
		// とりあえずファイル内先頭の1データを表示
		printf(dateTime);
		printf(buff);
		for(cnt = 0; cnt < atoi(buff); cnt++){
			printf("%02X", *(data + cnt));
		}

		// ファイルクローズ
		ret = fclose(fp);
		if(ret == -1){
			// ファイルクローズエラー
			;
		}
	}

	ret = pthread_mutex_unlock(&mutexBinaryLog);

	return;
}

Discussion

ログインするとコメントできます