계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

  • 홈
  • Who Am I(CV)
  • 태그

공지사항

인기 글

태그

  • DIP
  • 컴퓨터비전
  • 선형회귀
  • ComputerVision
  • ML
  • LM
  • f1-score
  • machinelearning
  • 군집화
  • 언어모델
  • DigitalImageProcessing
  • 에지검출
  • 패턴인식
  • SIFT
  • 최대유량
  • 알고리즘
  • NLP
  • networkflow
  • 기계학습
  • 비용함수
  • 지도학습
  • 디지털이미지처리
  • 비지도학습
  • 경사하강법
  • 네트워크플로우
  • MaximumFlow
  • 결정경계
  • 머신러닝
  • 파이썬 클린코드
  • 손실함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

[유닉스 시스템 프로그래밍] Ch01. 유닉스 시스템 프로그래밍 개요
Computer Science/유닉스프로그래밍

[유닉스 시스템 프로그래밍] Ch01. 유닉스 시스템 프로그래밍 개요

2020. 9. 11. 19:46
반응형

(본 강의 노트는 한빛 아카데미의 <유닉스 시스템 프로그래밍> 책을 기반으로 하고 있습니다)

Ch01. 유닉스 시스템 프로그래밍 개요

학습목표

  • 유닉스 시스템 관련 표준을 이해한다
  • 유닉스 시스템 프로그래밍이 무엇인지 이해한다
  • 시스템 호출과 라이브러리 함수의 차이를 이애한다
  • 유닉스 시스템의 기본 명령을 사용할 수 있다.
  • C 컴파일러와 make 도구를 사용할 수 있다.

목차

  1. 개요
  2. 유닉스 시스템 표준
  3. 유닉스 시스템 프로그래밍이란
  4. 유닉스 시스템 도구

01. 개요

: 생략

02. 유닉스 시스템 표준

  1. ANSI C 표준
  • 미국 표준협회(ANSI)에서 표준화한 C언어 명세
  1. POSIX
  • portable unix
  • 서로 다른 유닉스 시스템 사이에서 상호 이식이 가능한 응용프로그램을 개발하기 위한 표준으로 IEEE에서 제정
  1. X/Open 가이드
  • 유럽의 유닉스 제조업체를 중심으로 설립한 단체
  • 개방형 시스템에 대한 표준을 정의하고 보급하고 있음
  1. 시스템V 인터페이스 정의
  • SVID: 프로그램과 장치에서 이용할 수 있는 시스템 호출과 C라이브러리 표준 포함

03. 유닉스 시스템 프로그래밍이란

  1. 단일 유닉스 규격(SUS)
  • IEEE와 오픈 그룹의 작업에 기반하여 발표
  1. 유닉스 시스템 프로그래밍의 정의
  • 유닉스에서 제공하는 시스템 호출을 사용해 프로그램을 작성하는 것을 의미
  1. 시스템 호출
  • 유닉스 시스템이 제공하는 서비스를 이용해 프로그램을 작성할 수 있도록 제공되는 프로그래밍 인터페이스
  • 기본적인 형태는 C언어의 함수 형태로 제공
  1. 라이브러리 함수
  • 라이브러리 : 미리 컴파일된 함수들을 묶어서 제공하는 특수한 형태의 파일
  • 자주 사용하는 기능을 독립적으로 분리하여 구현해둠으로써 프로그램의 개발과 디버깅을 쉽게하고 컴파일을 좀 더 빠르게 할 수 있다.

04. 유닉스 시스템 도구

시스템 호출과 라이브러리 함수의 비교

  1. 시스템 호출
  • 커널의 해당 서비스 모듈을 직접 호출하여 작업하고 결과를 리턴
  • 성공하면 0을 리턴, 실패하면 -1을 리턴
  • 오류 발생 시, 전역변수 errno에 오류 코드를 저장
  1. 라이브러리 함수
  • 일반적으로 커널 모듈을 직접 호출 안함
  • 오류 발생 시 NULL을 리턴, 함수의 리턴값이 정수형이면 -1을 리턴
  • errno 변수에 오류 코드 저장

유닉스 기본 명령

  • 로그인/ 로그아웃

명령

기능

주요 옵션

예제

telnet

유닉스시스템에 접속

-

telnet hanb.co.kr

logout

유닉스시스템에서 접속해제

-

logout

exit

-

exit

  • 프로세스 관련 명령

명령

기능

주요 옵션

예제

ps

현재 실행 중인 프로세스의 정보를 출력

-ef : 모든 프로세스에 대한 상세 정보 출력

ps

ps -ef

ps -ef | grep ftp

kill

프로세스 강제 종료

-9 : 강제 종료

kill 5000

kill -9 5001

  • 파일/디렉토리 조작 명령

명령

기능

주요 옵션

예제

pwd

현재 디렉토리 경로 출력

-

pwd

ls

디렉토리 내용 출력

-a : 숨김파일출력

-l : 파일 상세정보 출력

ls -a /tmp

ls -l

cd

현재 디렉토리 변경

-

cd /tmp

cd ~han01

cp

파일/디렉토리 복사

-r : 디렉토리 복사

cp a.txt b.txt

cp -r dir1 dir2

mv

파일/디렉토리 이름변경과 이동

-

mv a.txt b.txt

mv a.txt dir1

mv dir1 dir2

rm

파일/디렉토리 삭제

-r : 디렉토리 삭제

rm a.txt

rm -r dir1

mkdir

디렉토리 생성

-

mkdir dir1

rmdir

빈 디렉토리 삭제

-

mkdir dir2

cat

파일 내용 출력

-

cat a.txt

more

파일 내용을 쪽단위로 출력

-

more a.txt

chmod

파일 접근권한 변경

-

chmod 755 a.exe

chmod go+x a.exe

grep

패턴 검색

 

grep abcd a.txt

  • vi 편집기 내부 명령

기능

명령

기능

명령

입력모드전환

i,a,o,O

명령모드전환

<Esc>

커서이동

j,k,h,l 또는 방향키

행이동

#G (50G, 143G 등)

또는

:행번호

한글자수정

r

여러글자수정

#s (5s, 7s 등)

단어수정

cw

명령취소

u, U

검색하여수정

:%s/aaa/bbb/g

복사

#yy (5yy, 10yy 등)

붙이기

p

커서이후삭제

D(shidt-d)

글자삭제

x, #x(3x,5x 등)

행삭제

(잘라내기)

dd, #dd(3dd, 4dd 등)

저장하고종료

:wq! 또는 ZZ

저장않고종료

:q!

행 붙이기

J(shift-j)

화면다시표시

ctrl+l

행번호보이기

:set nu

행번호없애기

:set nonu

  • 기타 명령

명령

기능

주요 옵션

예제

su

사용자 계정 변경

- : 변경할 사용자의 환경 초기화 파일 실행

su

su -

su - han02

tar

파일/디렉토리 묶기

-cvf : tar파일생성

-tvf : tar파일내용보기

-xvf : tar파일풀기

tar cvf a.tar *

tar tvf a.tar

tar xvf a.tar

whereis

파일 위치 검색

-

whereis ls

which

-

which telnet

컴파일 환경

  1. 컴파일이란?
  • 텍스트로 작성한 프로그램을 시스템이 이해할 수 있는 기계어로 변환하는 과정
  • 보통 컴파일 과정과 라이브러리 링크 과정을 묶어서 수행하는 것을 말함
  1. GNU C 컴파일러 : gcc (대부분 GNU C 컴파일러 사용)
  • gcc test.c : 기본 실행 파일명은 a.out으로 아웃풋 저장
  • gcc -o test test.c : 실행 파일명 지정은 -o option으로, test로 저장

Makefile & make

: 소스 파일이 여러 개를 묶어서 실행 파일을 생성하는 도구

오류처리 함수

1. perror()

2. strerror()

동적 메모리 할당

  1. 메모리 할당 malloc()
    : 인자로 지정한 크기의 메모리 할당
  2. 메모리할당과 초기화 calloc()
    : 지정한 크기만큼 메모리를 할당하고 0으로 초기화
  3. 메모리 추가 할당 realloc()
    : 이미 할당받은 메모리에 사이즈 크기의 메로리를 추가로 할당
  4. 메모리 해제 free()
    : 사용을 마친 메모리 반납

명령행 인자

1. 명령행 : 사용자가 명령을 입력하는 행

  • int main(int argc, char *argv[]);
  • 명령행 인자 : 명령을 입력할 때 함께 지정한 인자(옵션, 옵션인자, 명령인자 등)
  • 명령행 인자의 전달 : 메인 함수로 자동 전달

2. 옵션 처리 함수 : getopt( )

  • int getopt(int argc, char * const argv[], const char *optstring);
  • optstring : 사용할 수 있는 옵션 문자, 옵션에 인자가 있을 경우 문자 뒤에 ':' 추가
  • extern char *optarg;
  • optarg : 옵션의 인자 저장
  • extern int optind, opterr, optopt;
  • 순서대로, 다음에 처리할 argv의 주소, 오류 메시지를 출력하지 않으려면 0으로 지정, 오류를 발생시킨 문자
반응형

'Computer Science > 유닉스프로그래밍' 카테고리의 다른 글

[유닉스 이론과 실습] ch13. 배시쉘 프로그래밍  (0) 2020.10.18
[유닉스 이론과 실습] ch04. vi 사용법 익히기  (0) 2020.10.18
Introduction UNIX  (0) 2020.10.18
[유닉스 시스템 프로그래밍] Ch02. 파일 입출력  (0) 2020.09.27
[유닉스 이론과 실습] ch05. 배시쉘 활용하기  (0) 2020.09.23
    'Computer Science/유닉스프로그래밍' 카테고리의 다른 글
    • [유닉스 이론과 실습] ch04. vi 사용법 익히기
    • Introduction UNIX
    • [유닉스 시스템 프로그래밍] Ch02. 파일 입출력
    • [유닉스 이론과 실습] ch05. 배시쉘 활용하기
    계속지나가기
    계속지나가기
    NLP Engineer

    티스토리툴바