C

개요 canonicalized 된 절대 경로명을 돌려주는 함수 사용 예시 // 프로그램의 실행 경로를 출력합니다. // test @ ubuntu 20.04 #include #include int main(int argc, char** argv) { char caBuf[PATH_MAX]; realpath(argv[0], caBuf); printf("%s\n", caBuf); return 0; }
개요 하드웨어 설계자들은 공간의 낭비를 최소화하고자 하드웨어의 제어와 상태 확인을 위한 레지스터에 비트단위로 기능을 할당합니다. 때문에 많은 시스템 제어 프로그램은 C언어의 기본 자료형 크기보다 작은 단위로 데이터를 다루어야 합니다. 이를 위해 C 언어에서는 비트단위 연산자(bitwise)와 비트 필드 자료구조를 제공합니다. 이번 포스트에서는 이들에 대해 알아보도록 하겠습니다. 참고: C언어의 포인터와 비트단위 연산의 조합은 저수준(low level) 프로그램에서 유용합니다. 이를 이용하면 대부분의 어셈블리를 대체할 수 있습니다. 비트단위 연산자(Bitwise Operator) C 에서 제공하는 비트 연산자는 다음과 같습니다. & : AND | : OR ^ : XOR ~ : NOT : RIGHT SHIF..
· 개발도구
목표 Xilinx 사의 Zynq SoC 에서 동작하는 Linux Application 을 작성 및 컴파일 하고자 합니다. 환경 Host OS : Windows 10 Oracle VM VirtualBox (5.2.12 r122591) Guest OS : Xubuntu 18.04 (64bit) 설치도구 Arm Cross Compiler git VS Code (editor) Arm Cross Compiler 참고 https://www.acmesystems.it/arm9_toolchain https://blog.thinkbee.kr/linux/crosscompile-arm/ http://julrams.tistory.com/25 https://stackoverflow.com/questions/16935168/cr..
개요 덱(Double Ended Queue)은 앞과 뒤 양쪽 모두에서 데이터의 삽입과 제거가 가능한 큐를 말합니다. 구현 덱을 구성하는 연산은 다음과 같습니다.fnIinit () : 덱을 초기화 합니다. fnAddFront(item) : 덱의 전단에 item 을 삽입합니다. fnDelFront() : 덱의 전단에서 item 을 1개 삭제 합니다. fnAddRear(item) : 덱의 후단에 item 을 삽입합니다. fnDelRear() : 덱의 후단에서 item 을 1개 삭제 합니다. fnGetFront() : 덱의 전단에 있는 item 을 1개 얻습니다. 단, 삭제는 하지 않습니다. fnGetRear() : 덱의 후단에 있는 item 을 1개 얻습니다. 단, 삭제는 하지 않습니다. fnIsEmpty()..
개요 앞선 포스트에서 Escape Sequence를 이용하여 커서의 위치를 변경하였으며, 변경된 커서를 이용하여 같은 자리에 문자를 겹쳐서 출력해 보았습니다. 이 외에도 Escape Sequence 를 이용하면 출력되는 문자의 색상을 변경할 수도 있습니다. 문자의 색상과 관련된 Escape Sequence 는 다음과 같습니다. ▼ Escape Sequence Table - 그래픽 모드 설정 부분 출력문자 색상 변경하기 위 테이블의 내용을 바탕으로 출력문자의 색상을 변경하여 출력해보도록 하겠습니다. ▼ color.c #include int main(void) { // 글자색 : 빨간색 printf("\x1b[31mHello\n"); // 설정 초기화 printf("\x1b[0mHello\n"); retur..
개요 이스케이프 시퀀스(escape sequence) 는 \ 로 시작하는 두 개 이상의 문자로 구성된 문자열입니다. 문자 또는 문자열 내부에서 사용되는데, 이스케이프 문자(\)와 조합하여 직접 나타내기 힘든 특수한 기능들을 표현내는데 사용합니다. C/C++,JAVA, C# 등 에서 사용합니다. 예를 들어, \n 은 \ 과 n 각각으로 인식되지 않고, 줄바꿈을 의미하는 하나의 문자로 해석됩니다. 우리가 자주쓰는 간단한 줄 바꿈 및 들여쓰기(\t) 외에도 리눅스 환경에서 이를 이용하여 화면에 프로그램의 수행결과 및 진행상태를 표시할 때 사용할 수 있는 유용한 기능들이 많이 있어 이를 정리 및 기록합니다. ※ 일러두기 리눅스 환경에서 gcc 를 이용하여 컴파일하여 동작을 시험해보았습니다. 커서 이동하기 화면에..
개요 배열을 이용하여 Queue 를 작성할 경우, 큐의 상태를 저장하는 변수의 값(head, tail)이 감소하지 않고 계속 증가하기 때문에 한계치(QUEUESIZE) 에 도달하면 더 이상 올바른 저장소를 가리키지 못하기 때문에 이를 보완할 수 있는 방법이 필요합니다.변수의 값이 최대치에 도달할 경우, 이를 초기값으로 돌려주는 방식으로 원형큐를 사용완가능합니다.※ 참고로 원형큐를 링버퍼라고도 합할 수 있습니다.다음은 이러한 아이디어를 C 언어로 구현한 것입니다. 구현 앞서 작성한 포스트의 배열로 구현한 (선형)큐의 소스코드를 기초로 합니다. // main.c #define QUEUESIZE 256 #include typedef struct { int head, tail; int items[QUEUESIZ..
· 운영체제
개요 유닉스 계열(리눅스) 시스템의 시간을 설정/조회할 필요가 있어 정리하여 보았습니다.*시스템의 시간을 설정할 수 있는 시스템 관리자(root) 권한에서 실행해야 실제로 시스템에 시간을 설정할 수 있습니다.참고 time(7) - Linux Programmer’s Manual Time Basics (The GNU C Library) Linux Programmer’s Manual - CTIME(3) IBM Knowledge Center - mktime() – 로컬 시간 변환 C Date time tutorial 용어 정의 시간은 크게 두 가지 범주로 표현을 할 수 있습니다.달력시간(Calendar time)연속된 시간에서 한 지점을 의미합니다. 절대시간(absolute time) 이라고 부르기도 합니다.상..
쓴웃음
'C' 태그의 글 목록