본문으로 바로가기
homeimage

학습

해당되는 글 256
  • thumbnail
    컴퓨터/프로그래밍

    C언어 심볼릭링크 정보 구하기 readlink()

    readlink() function in C language C함수 readlink()는 심볼릭 링크의 원래 위치나 파일 정보를 구합니다. readlink()의 주의할 점은 버퍼에 정보를 저장하면서 NULL 코드를 추가하지 않습니다. 그러므로 반드시 버퍼를 초기화한 후에 호출합니다. 헤더: unistd.h 형태: ssize_t readlink(const char *path_name, char *buff, size_t buff_size) 인수: const char *path 심볼릭 링크 이름 char *buff 정보를 받아 올 버퍼 size_t buff_size 퍼버의 크기 반환: ssize_t == -1 실패 > 0 성공시 정보의 바이트 수 C언어 readlink() 함수 예제 심볼릭 링크 /tmp/ln..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 링버퍼 구현 방법(Ring Buffer)

    편리한 C언어 링버퍼 프로그램 코딩에서 버퍼는 매우 중요합니다. 사용처에 따라 다양한 방식으로 구현하는데요, 특히 링버퍼(Ring Buffer)는 다목적이라고 할 수 있습니다. 통신을 통한 시스템 제어 프로그래밍에서 버퍼는 매우 중요합니다. 외부에서 제어 신호가 계속 오는데 시간이 걸려서 제 때에 처리하지 못하거나, 반대로 시스템 상태를 계속해서 서버에 전송해야 하는데 갑자기 통신 상태가 불량해지 경우 링버퍼로 문제를 해결할 수 있습니다. 링버퍼는 구현하기 쉽고 버퍼가 모두 찼을 경우 어떻게 처리할지 선택에 따라 구현하기도 수월합니다. 오래된 자료부터 버려가면서 버퍼링하거나 버퍼 오버로 판단하여 에러 처리 루틴을 호출합니다. 링버퍼는 아래와 같은 구조로 되어 있습니다. 링버퍼는 버퍼와 버퍼에 쓰기와 읽기..
  • thumbnail
    컴퓨터/프로그래밍

    TCP/IP 전송 버퍼 빈 용량 확인하는 방법

    TCP/IP 전송 버퍼 남은 용량 확인 이유 소켓통신 중에 TCP/IP 통신은 반드시 전달해야 하는 데이터를 보내거나 대용량의 데이터를 순서에 맞추어 전송할 때 매우 유용합니다. UDP/IP를 오토바이 택배라고 한다면 TCP/IP는 컨베이어 벨트로 물건을 하나씩 전달하는 것과 비교할 수 있습니다. 오토바이 택배는 배달 사고가 날 수 있지만, 컨베이어 벨트는 좀 더 안전하게 전달할 수 있습니다. 오토바이 택배는 데이터가 많은 경우 여러 명으로 나누어서 보내다 보면 도착하는 순서가 바뀔 수 있지만, 컨베이어 벨트는 물건을 올려놓는 순서대로 상대방이 받습니다. 이렇게 TCP/IP는 전송할 데이터를 write()하면 알아서 수신자가 받아서 편한데요, 이렇게 편한 이유는 중간에 TCP 프로토콜이 열심히 일하기 때..
  • thumbnail
    컴퓨터/프로그래밍

    tcp udp 차이점과 프로그래밍에서 주의해야할 부분

    tcp/ip와 udp/ip의 다른 점은? 소켓 통신 tcp/ip와 udp/ip를 학습을 통해 어떤 프로토콜인지는 알지만, 정확한 차이점과 특성을 모르면 잘못된 코딩을 하거나 실수하는 경우가 많습니다. 통신은 외부 업체와 협업하거나 장비를 이용해야 해서 어느 한쪽이 엉뚱하게 프로그램을 만들면 간단한 일도 힘든 작업이 될 수 있는데요, tcp/ip와 udp/ip의 차이점과 각 프로토콜을 사용했을 때의 주의해야 할 내용을 알아보겠습니다. 우선 tcp/ip는 연결 지향성이고 udp/ip는 비연결 지향성이라고 합니다. tcp/ip는 스트림 데이터이고 udp/ip는 패킷 단위로 보낸다, 또는 tcp/ip는 데이터 경계가 없지만, udp/ip는 데이터 경계가 있다는 등의 생소한 단어로 어렵게 느껴집니다. 그러나 알고..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 strnlen() 문자열 길이 구하기 함수

    C strnlen() 문자열 길이 구하기 함수 strnlen() C언어에서 문자열 길이를 구하는 함수에는 strlen()과 strnlen()이 있습니다. strlen()은 문자열만 인수로 받지만, strnlen()은 최대 길이까지 입력 받습니다. 이유는 인수로 받은 문자열 변수가 초기화가 안 되었고 NULL 문자가 없을 경우 실행 중 위험을 줄이기 위함입니다. 즉, strnlen()은 strlen()처럼 NULL까지의 길이를 찾되 특정 길이 이상은 검색하지 않도록 합니다. 헤더: string.h 형태: size_t strlen( const char *str, size_t maxlen) 인수: char *str 길이를 구할 문자열 size_t maxlen 길이를 구할 최대 길이 반환: 지정한 최대 길이 이..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 문자열에서 서식에 맞춘 변수 값 받기 sscanf()

    C sscanf() 문자열에서 서식에 맞춘 변수 값 받기 함수 문자열로부터 서식을 갖춘 데이터를 입력받습니다. 헤더: stdio.h 형태: int sscanf(const char *str, const char * format, ... ) 인수: char *str 문자열 char *format 서식 문자열 반환: int 입력된 항목 수를 반환하며, 오류가 발생하면 EOF를 반환 서식을 갖춘다는 것은 입력을 어떤 모양에 맞추어 입력을 받는다는 것입니다. 아래의 서식에 사용하는 변환 문자열을 참고하세요. 주의할 점은 서식에 맞추어 입력하질 못하면 다음 scanf까지 모두 에러가 발생하므로 조심하여야 합니다. 예제의 결과를 확인하세요. 변환 문자열 의미 %o 8진 정수 형식으로 입력 %d 10진 정수 형식으로 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 열기 함수 fopen()

    C fopen() 파일 열기 함수 C언어 함수 fopen()은 파일을 읽거나 쓰기를 하기 위해서 파일 열기를 합니다. 파일을 사용 후에는 fclose()로 닫습니다. 헤더: stdio.h 형태: FILE *fopen(const char *path, const char *mode) 인수: char *path 열고자하는 파일의 전체 이름 char *mode 파일 열기를 위한 옵션, 사용 형태 반환: FILE * 파일 포인터를 반화하며, 열기에 실패하면 NULL을 반환합니다. mode 상세 설명 mode 설명 "r" 읽기 전용. 파일이 반드시 있어야 합니다. "w" 쓰기 전용. 파일이 없으면 생성되고, 파일이 있다면 기존 내용은 지워집니다. "a" 내용 추가. 파일이 없으면 생성되고, 파일이 있다면 기존 내용..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일 읽기 함수 read()

    C read() 파일 읽기 함수 open() 함수로 열기한 파일의 내용을 읽기 합니다. 헤더: unistd.h 형태: ssize_t read (int fd, void *buf, size_t nbytes) 인수: int fd 파일 디스크립터 void *buf 파일을 읽어 들일 버퍼 size_t nbytes 퍼버의 크기 반환: ssize_t == -1 실패 > 0 정상적으로 실행되었다면 읽어들인 바이트 수 C언어 read() 함수 예제 예제에 사용할 test.txt 파일에는 아래와 같이 5바이트씩 문장이 입력되어 있습니다. 12345 ABCDE abcde 67890 표준 출력함수 fgets() 에는 버퍼가 크더라도 파일의 첫 번째 행만 읽어서 반환하지만 read()는 버퍼의 크기만큼 읽을 수 있다면 모두 읽..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 메모리를 0으로 채움 bzero() 함수

    C bzero() 메모리를 0으로 채움 함수 malloc()이나 calloc()에서 할당 받은 메모리 또는 배열, 구조체 변수의 메모리 영역을 0으로 채워서 초기화합니다. 데이터를 읽어 들이거나 함수를 호출하기 전에 메모리를 초기화를 하는 것이 디버깅에 유리합니다. 유사 함수로 memset()이 있으나 0으로 초기화는 bzero()가 더 간편합니다. 그러나 bzero()는 deprecated 함수이므로 memset()를 사용하는 것을 권합니다. 헤더: string.h 형태: void bzero(void *s, size_t n) 인수: void *ptr 메모리의 크기를 변경할 포인터 size_t size 초기화 크기 반환: - C언어 bzero() 함수 예제 #include #include #include..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 파일로 서식에 맞추어 문자열 출력 함수 dprintf()

    C dprintf() 파일로 서식에 맞추어 문자열 출력 함수 서식에 맞추어 파일로 출력합니다. 헤더: stdio.h 형태: int dprintf( int fd, const char *format, ...) 인수: int fd 파일 디스크립터 const char *format 출력할 데이터 서식 ... 서식에 맞춘 변수 나열 반환: int 출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환합니다. 서실 변환 문자열 변환 문자열 의미 %o 8진 정수 형식으로 입력 %d 10진 정수 형식으로 입력 %ld long형 10진 정수 형식으로 입력 %x 16진 정수 형식으로 입력 %f float 형 형식으로 입력 %lf double 형 형식으로 입력 %c 문자 형식으로 입력 %s 문자열 형식으로 입력 서식 문자열..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 메모리 영역으로 크기만큼 서식에 맞추어 문자열 출력 함수 snprintf()

    C snprintf() 메모리 영역으로 크기만큼 서식에 맞추어 문자열 출력 함수 메모리 영역으로 서식에 맞추어 출력합니다. snprintf()는 매우 안전한 함수로 지정한 길이에 해당하는 위치에 반드시 NULL문자를 삽입해 줍니다. 즉, 버퍼 크기가 10이고 snprintf()에 버퍼 크기 10으로 요청하면 변환되는 문자열이 버퍼 크기보다 크다고 해도 9개의 문자를 입력해 준 다음 10번째에 NULL이 대입됩니다. 즉, 버퍼 크기를 정확히 알려주면 오버플로우가 발생하지 않습니다. 헤더: stdio.h 형태: int snprintf( char *s , size_t size, const char *format, ...) 인수: char *s 서식에 맞추어 저장할 메모리 영역의 포인터 size_t size 출..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 메모리 영역으로 서식에 맞추어 출력 sprintf()

    C sprintf() 메모리 영역으로 서식에 맞추어 출력 함수 메모리 영역으로 서식에 맞추어 출력합니다. 헤더: stdio.h 형태: int sprintf( const char s, const char *format, ...) 인수: char *s 서식에 맞추어 저장할 메모리 영역의 포인터 const char *format 출력할 데이터 서식 반환: int 출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환합니다. 서실 변환 문자열 변환 문자열 의미 %o 8진 정수 형식으로 입력 %d 10진 정수 형식으로 입력 %ld long형 10진 정수 형식으로 입력 %x 16진 정수 형식으로 입력 %f float 형 형식으로 입력 %lf double 형 형식으로 입력 %c 문자 형식으로 입력 %s 문자열 형식으..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.