맞는데 왜 틀릴까..?

Linux 17

[리눅스] 유닉스/리눅스

유닉스 유닉스의 특징 단순성 : 최소한의 기능만 제공, 자원에 대한 일관된 관점 제공 이식성 : c언어로 작성, 다양한 플랫폼에 이식 가능 개방성 : 초창기 유닉스 및 리눅스 소스 코드 공개 다중 사용자, 다중 프로세스 - 여러 사용자가 동시에 사용 가능, 여러 프로그램이 동시에 실행, 관리자로서 슈퍼유저가 존재 쉘 프로그래밍 지원 - 명령어나 유틸리티 등을 사용하여 작성한 프로그램 (쉘 스크립트) 훌륭한 네트워킹 지원 - 유닉스에서부터 네트워킹 시작 (ftp, telnet, WWW, X-window) 운영체제 구조 운영체제 - 컴퓨터의 하드웨어 자원을 운영 관리 프로그램을 실행할 수 있는 환경 제공 커널 - 운영체제의 핵심으로 하드웨어 운영 및 관리 프로세스, 메모리, 파일, 주변장치, 통신 등을 관리..

Linux 2022.10.16

[리눅스] 시스템 프로그래밍 환경 - gdb 디버거

gdb 가장 대표적인 디버거 정지점 설정, 한 줄씩 실행, 변수 접근 및 수정, 함수 탐색, 추적(tracing) 기능 gdb 사용을 위한 컴파일 -g 옵션을 이용하여 컴파일함 gcc -g -o long long.c ## 컴파일 gdb long ## 소스파일이 아닌 실행파일로 실행 명령어 l [줄번호] : 지정된 줄 프린트 l [파일명]:[함수명] : 지정된 파일의 함수를 프린트 b [함수] : 함수 시작 부분에 정지점 설정 b [n] : n번 줄에 정지점을 설정 b +[n] : 현재 줄에서 n개 줄 이후에 정지점 설정 info b : 현재 설정된 정지점 출력 clear [줄번호] : 해당 정지점을 삭제 d : 모든 정지점을 삭제 run : 현재의 인수를 사용하여 프로그램 실행 run [args] : 새..

Linux 2022.10.16

[리눅스] 시스템 프로그래밍 환경 - make

make 시스템 대규모 프로그램의 경우에는 헤더, 소스 파일, 목적 파일, 실행 파일의 모든 관계를 기억하고 체계적으로 관리하는 것이 필요 파일들의 의존관계를 파악 후 make 시스템을 이용하여 효과적으로 작업 필요한 파일만 다시 컴파일하여 실행파일을 재생성 Makefile 구성 형식 대상리스트: 의존리스트 (tab) 명령리스트 하나의 디렉토리에는 하나의 Makefile만이 존재해야 함 Makefile 파일명 외에 다른 파일명을 갖는 입력 파일을 사용할 때는 make -f 처럼 사용함 ex) make -f mymakefiile.ex9 make의 실행 make를 실행하면 gcc -c main.c##이렇게 실행됨 gcc -c copy.c gcc -o main main.o copy.o 만약 copy.c 파일이..

Linux 2022.10.14

[리눅스] 시스템 프로그래밍 환경 - gcc 컴파일러

컴파일러 유닉스 계열 운영체제의 유틸리티와 상용 프로그램은 대부분 C언어로 작성 유닉스와 리눅스는 운영체제 자체가 C언어로 작성 공개된 C 컴파일러로 gcc 컴파일러가 널리 사용됨 gcc 컴파일러 컴파일 gcc long.c a.out ## 기본 실행 파일 생성 -c 옵션 gcc -c long.c ## 목적 파일(.o)까지 생성 -o 옵션 gcc -o long long.c ## a.out 대신의 별도의 실행파일 지정 ./long ## 실행파일 -O 옵션 -O0 : 최적화를 수행하지 않는다 -O1, O2 : 최적화를 수행한다 (O2가 기본 옵션) -O3 : 가장 높은 레벨의 최적화 (사용상 주의 필요) -Os : 사이즈 최적화 gcc -O0 sqrt.c ## sqrt.c를 최적화를 수행하지 않고 컴파일 -I..

Linux 2022.10.14

[리눅스] 시스템 프로그래밍 환경 - vi

vi vi의 동작 모드 1. 명령 모드 - 커서 이동, 페이지 이동, 글자 삭제, 줄 삭제 등 2. 입력 모드 - 입력한 내용이 버퍼로 옮겨져 추가, 수정됨 3. 마지막행 모드 - 검색, 저장, 바꾸기, 줄 이동 등 명령 모드 명령어 k : 위 j : 아래 l : 오른쪽 h : 왼쪽 x : 커서 위치의 문자 삭제 X : 커서 바로 앞 글자 삭제 D : 커서 위치부터 줄 끝까지 삭제 u : 방금 수행한 명령 취소 U : 해당 줄의 모든 편집 취소 dd : 커서 위치의 줄 삭제 (버퍼에 잘라내기) dw : 커서 위치의 단어 삭제 숫자 : 모든 명령어에는 숫자를 붙일 수 있으며, 해당 숫자만큼 명령어 수행 반복 ex) 3x -> 명령어 x를 3번 반복 yw : 현재 커서가 위치한 단어를 복사 yy : 현재 행..

Linux 2022.10.14

[리눅스] 권한 및 쉘

setUID를 파일에 설정하면 user 권한에 x대신 s가, setGID를 파일에 설정하면 group 권한에 x대신 s가, Sticky Bit를 파일에 설정하면 other 권한에 x대신 t가 들어감 7777권한이란 기존 777(rwxrwxrwx)권한에 특수권한을 추가로 준것임 setUID(4000) + setGID(2000) + Sticky Bit(1000) = 7000 지금까지 권한은 0777 인데 특수권한을 생략하고 표기했던것임. 첫줄에 #!/bin/bash 을 주고 그 뒤에 echo "hello world"라고 입력을 합니다. echo 명령어는 쉘 프로그래밍 언어에서 출력문입니다. "hello world"라는 문구를 출력하겠다는 의미입니다. 그리고 마지막 줄에 exit 0 을 입력한 뒤 esc를 눌..

Linux 2022.10.04