[c++] libuv와 파일 액세스

libuv는 C 언어로 작성된 멀티플랫폼 지원 라이브러리이다. 파일 시스템 이벤트 처리 및 네트워크 작업을 처리하는 데 사용된다. 이 라이브러리를 이용하여 파일 액세스를 하는 방법에 대해 알아보겠다.

libuv 설치

libuv는 공식 웹사이트 또는 패키지 매니저를 이용하여 손쉽게 설치할 수 있다.

# 패키지 매니저를 이용하는 경우 (예: Ubuntu)
sudo apt-get install libuv1-dev

파일 액세스 예제

다음은 libuv를 사용하여 파일을 읽고 쓰는 간단한 예제이다.

#include <uv.h>
#include <stdio.h>

void on_read(uv_fs_t *req) {
    if (req->result < 0) {
        fprintf(stderr, "Read error: %s\n", uv_strerror(req->result));
    } else if (req->result == 0) {
        uv_fs_req_cleanup(req);
    } else {
        printf("Read %d bytes: %s\n", req->result, req->bufsml[0].base);
        
        // 파일 쓰기 예제
        uv_fs_t write_req;
        uv_fs_write(uv_default_loop(), &write_req, 1, req->bufsml, 1, 0, NULL);
        uv_fs_req_cleanup(&write_req);
    }
}

int main() {
    uv_loop_t *loop = uv_default_loop();
    
    uv_fs_t open_req;
    uv_fs_open(loop, &open_req, "test.txt", O_RDONLY, 0, NULL);
    
    uv_fs_t read_req;
    uv_fs_read(loop, &read_req, open_req.result, &bufsml, 1, 0, on_read);
    
    uv_run(loop, UV_RUN_DEFAULT);
    
    uv_loop_close(loop);
    return 0;
}

이 예제는 파일을 열고 읽은 후 콘솔에 출력하고, 그 내용을 다시 파일로 쓰는 일련의 작업을 수행한다.

libuv를 통해 파일 액세스를 하는 방법에 대한 간단한 예제를 살펴보았다.

참고자료