목록분류 전체보기 (90)
Love Every Moment
1. PATH PATH 는 리눅스 환경변수의 일종으로 실행 파일의 경로이다. printenv 명령어를 통해 환경변수 목록을 확인할 수 있다. 환경변수 PATH 가 어떻게 설정되어 있는지 확인하는 명령어는 echo $PATH 이다. 각각의 경로는 : 로 구분되며 총 다섯 개의 경로가 있는 것을 확인할 수 있다. 명령 탐색 경로는 왼쪽에서부터 우선 순위를 가진다. $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 2. 차이 (1) usr/local/bin 스스로 설치한 명령어를 사용할 수 있도록 하는 장소이다. 보통 게임이나 잡다한 유틸들이 들어있다. 리눅스 저장소에 있는것 이외의 것을 설치할 때나 자작 명령어를 보관해야 할 때 유용하다. /usr/bin..
1. 프로세스(Process) (1) 프로세스란? 현재 실행 중인 프로그램 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당 받아 실행중인 것 운영체제의 제어 아래 실행(Running), 대기(Waiting), 중단(Stopped), 좀비(Zombie) 중 하나의 상태에 있게 된다. 각각의 프로세스가 가지는 고유의 번호를 PID(Process Idendification Number)라고 한다. 예를 들어 데비안 리눅스가 부팅될 때에는 최상위 프로세스인 systemd(PID: 1)이 생성되며 모든 프로세스들은 이 1번 프로세스의 자식 프로세스가 된다. 부모 프로세스의 PID 를 줄여서 PPID 라고 한다. ps 명령어를 통해 현재 실행중인 프로세스 목록을 확인할 수 있다. (2) 쓰레드(..
0. 개요 유닉스 이전의 운영 체제에서는 프로그래머가 직접 입·출력장치를 설정하고 연결했어야 했다. 하지만 유닉스에서는 데이터 스트림(Data Stream) 이라는 개념을 이용하여 장치를 추상화함으로써 open, read, write 하면 자동으로 입·출력 장치가 연결되도록 하였다. 스트림(Stream)은 컴퓨터에 연결되는 여러 장치들을 통일된 방식으로 다루기 위한 가상적인 개념이다. 이를 통해 프로그래머는 데이터가 어디서 나와 어디로 가는지 신경쓰지 않고 자유롭게 이용할 수 있다. 표준 스트림(Standard Stream) 은 프로세스가 생성되면 기본적으로 생기는 입·출력을 위한 채널이다. 여기에는 표준 입력(Stdin), 표준 출력(Stdout), 표준 에러(Stderr) 가 있으며 터미널을 열면 쉘..
1. 서브넷(Subnet) (1) 서브넷팅(Subnetting) 네트워크 관리자가 네트워크 성능을 향상시키기 위해 자원을 효율적으로 분배하는 것 서브넷 마스크를 이용하면 하나의 네트워크를 여러 개의 서브넷 네트워크로 분할 가능하다 (2) 기본 서브넷마스크 네트워크 ID 부분의 비트를 1로 치환한 것 IP 주소와 넷마스크를 AND 연산하면 네트워크 주소를 얻을 수 있다. A 클래스: 255.0.0.0 B 클래스: 255.255.0.0 C 클래스: 255.255.255.0 ★ 서브넷팅 예시 IP주소가 192.168.0.1 이라면 C 클래스라는 것을 알 수 있다. 해당 IP주소를 2진수로 표현하면 11000000.10101000.00000000.00000001 이다. 넷마스크는 앞에서부터 세번째 블록까지의 비..
0. 네트워크(Network) 두 대 이상의 컴퓨터가 물리적으로 또는 논리적으로 연결되어 통신 가능한 상태 규모에 따른 네트워크의 종류 (1) PAN(Personal Area Network) 가장 작은 규모의 네트워크 (2) LAN(Local Area Network) 근거리 영역 네트워크 또는 근거리 통신망 집, 학교, 또는 회사처럼 좁은 범위 내에서 고속 통신이 가능한 통신망 여러 기기가 하나의 네트워크(=와이파이 라우터)에 연결되어 있는 것 (3) MAN(Metropolitan Area Network) 대도시 영역 네트워크 (4) WAN(Wide Area Network) 광대역 통신망으로 LAN 보다 넓은 지역을 하나로 묶는 네트워크 지역과 지역, 지방과 지방, 국가와 국가, 또는 대륙과 대륙을 연결..
1. 형식문자열(FORMAT) int printf(const char* format, ...) 형식문자열, 서식문자열 또는 포맷 이라고 부르며 출력하고자 하는 문자열 을 의미한다. printf() 는 표준출력(stdout)에 일련의 데이터들을 형식문자열(format)에 지정되어 있는 형태로 출력한다. 형식문자열 뒤에 오는 가변인자들의 개수는 형식 문자열 속의 형식 태그(format tag)의 개수와 같다. 2. 서식지정자(Format Specifier) % 문자로 시작하며 대표적으로 %d, %c, %s, %p 등이 있다. 컴퓨터가 어떤 정보를 어떻게 해석할 건지 지정해주는 역할을 한다. 예를 들어 printf("%d\n", 10); 이면 10을 부호 있는 10진수 정수로 해석하여 출력한다. 형식 태그 안..
1. leaks 명령어 (1) 파일 실행 중에 검사하기 main 문 안에 while 문을 사용하는 등의방법을 써서 프로그램이 종료되지 않도록 하고 컴파일 후에 ./a.out 으로 파일을 실행시키고 leaks a.out ※ 해당 방법으로 메모리 누수가 뜨지 않는 경우가 있어서 (2)번 방법을 추천 (2) 프로그램 내부에 leaks 명령어 삽입 main 문 안에 직접 삽입했기 때문에 프로그램이 종료되기 전에 검사 가능 system 명령어를 통해 쉘 명령어를 main 문 안에서도 사용할 수 있다. system("leaks a.out > leaks_result_temp; cat leaks_result_temp | grep leaked && rm -rf leaks_result_temp"); #include #in..
1. Makefile 이란? Make: 주어진 쉘 명령어들을 조건에 맞게 실행하는 프로그램 Makefile: 어떤 조건으로 명령어를 실행할지 담은 파일 Incremental build: 반복적인 빌드 과정에서 변경된 소스코드에 의존성(Dependency)이 있는 대상들만 다시 빌드 예: main.c의 한 줄만 바꾸고 다시 빌드한다면 main.o 컴파일(gcc -c -o main.o main.c)과 a.out링크(gcc -o a.out main.o foo.o bar.o)만 수행 2. 소스 코드에서 프로그램 빌드하기 (1) 컴파일(Compile) 소스 코드를 컴퓨터가 이해할 수 있는 어셈블리어로 변환하는 과정 -c 옵션: 링크를 하지 않고 컴파일해서 목적 파일(Object File)을 생성하라는 의미 -o ..