- 0x0000007b
- 2차세계대전
- 3.20해킹
- 4대강
- 502 error
- 53빌딩
- 7840hs
- 88체육관 수영장
- ABI
- abortive close
- abortive shutdown
- AHCI
- akmods
- ALC1220
- alma linux
- alternatives
- AM4 메인보드
- AMD
- amd 7840hs
- amd 그래픽 게임용
- amd 내장 그래픽 최적화
- anonymous file
- API
- apple.com
- APT
- apt-get
- Armagnac
- Asrock
- ASTALIFT
- audacious player
- Today / Yesterday
- /
- Total
목록POSIX (11)
Linux Programmer

유닉스 표준 IEEE std 1003.1 issue 8 (SUSv5) 개정판 소개 부제 : C언어 표준과 리눅스와의 관계 유닉스 표준인 IEEE std 1003.1은 셸(shell)과 명령어, 유닉스 파일 이름 및 경로, 소스 레벨의 함수 호환성 등을 정의하는 문서다. 유닉스 표준이기도 하지만 리눅스도 이 표준을 준수하기 때문에 리눅스 개발자도 필수로 알아둬야 한다.원래 유닉스 표준 문서란 새로운 기능을 만드는 것이 아니라 기존의 기능 중에 공통으로 지원해야 하는 것들을 정의하고 문서화 한다. 다만 공통의 기능 중에는 필수(mandatory)로 제공해야 하는 기능이 있고, 해도 되고 안해도 되는 선택적(optional) 기능이 있다. 그리고 과거의 기능 중에 표준화에 충돌이 생기는 기능은 대체된(repl..
셸의 발전 순서대로 보면 다음과 같다. (shell의 한글 표기로 쉘이라고 적는 경우도 있지만 요새는 셸을 더 많이 쓰는 것 같아서 shell을 셸이라고 표기하겠다)Bourne shell : /bin/sh - POSIX shellC shell : /bin/csh - Sun microsystem (BSD)Korn shell : /bin/kshbash : /bin/bashzsh : /bin/zsh 1. bash 이전의 셸들가장 유명한 셸은 초기 유닉스에서 쓰였고, 아직까지도 현역으로 쓰이는 본셸(Bourne shell)이 있다. Steve Bourne이 만들었고, 그 이전에 유닉스의 아버지가 만들었던 Thompson shell이 있지만 지금은 쓰이지 않는다.본셸은 POSIX 표준에 기본 셸로 정해져서 POS..
파일(file)에 대한 토막글 : 파일이란 무엇인가? 토막글인데 쓰다보니 길어졌다. 보기 귀찮은 분들은 TL;DR을 참고하자. (페북에 썼다가 짬이 생긴 시간에 정리해서 블로그에 올려둡니다.) 이 글은 운영체제(OS)의 핵심 파트인 파일 시스템(FS)을 이해하는데 필요한 중요 개념인 경로(path)에 대해 굉장히 길게 설명하는 글이다. 따라서 조금 지루할 수도 있음을 밝힌다.😣 참고로 경로를 구성하는 것은 directory와 filename이며 /bin/bash 라는 파일이 있다면 "/bin"이 디렉토리, "bash"가 파일네임(혹은 basename이라고도 함)이 된다. 보통 file이라고 불리는 덩어리를 읽거나 쓰려면 메모리에 mapping(다른 말로 하면 사본을 만든다고 이해하면 됨)되어야 하는데..
IT용어 중에 SCSI를 뭐라고 읽을까? 스카시로 읽는 것이 맞을까? SCSI는 scuzzy로 읽는다. 그래서 scuzzy로 검색해보면 반대로 SCSI가 뜨기도 한다. 이렇게 IT 용어들 중에는 발음이 애매한 것들이 많다. 그 중에서 틀리게 발음하는 것들 몇 가지를 정리해보자. 1. SCSISCSI는 정식으로는 scuzzy로 발음한다. 한국식 발음으로 적으면 "스커지"가 되겠다. 그러나 구글에 검색해보면 위키백과에 "스커지/스카시"라고 적혀있는데, "스커지"는 맞지만 "스카시"는 틀린 발음이다. 특히 한국에서 스카시로 발음하는 경우가 많은데, 이건 용산전자상가의 용팔이가 일본에서 물건을 떼오던 시절에 일본 아키하바라에서 스카시로 읽던 것을 그대로 들여와서 굳어진 것이다. 일본어를 배우신 분들은 아시겠지만..
리눅스 시스템 프로그래밍을 배울때 꼭 알아야 할 사전 지식, 혹은 체크 항목 리눅스 시스템 프로그래밍을 배울때는 다음과 같은 항목을 미리 체크해보고, 방향과 교재, 항목을 체크해봐야 한다. 만일 방향을 잘못 잡으면 처음부터 잘못된 길을 갈 수 있으니 공부를 시작하기 전에 최소한 이 정도는 체크해보는 것이 좋다. 1. 어떤 국제 표준에 맞춰서 배울것인가? 리눅스(Linux)는 기본적으로 UNIX standard을 준수한다. 따라서 UNIX 표준과의 호환성을 염두에 둔다면 어떤 표준 레벨에 맞춰서 배울 것인지를 결정해야 한다. 유닉스 표준은 다음과 같은 것들이 있다.[1] System V (SysV) Svr4 Svr42 43BSD (4.3 BSD) POSIX (POSIX.1b, POSIX.1c, POSIX...
awk는 "패턴 검색과 처리언어"로서 독자적인 처리 문법과 언어 구성을 갖춘 툴이다. 문자열을 해석, 자르기, 계산, 정규표현식(REGEX) 등등 다양한 기능을 제공하며, 속도도 훌륭하다. 따라서 대부분의 UNIX, Linux, OSX에서 많이 사용되며, 유능한 프로그래머, 시스템 관리자라면 필수적으로 다루는 유틸리티이다. 본인이 속한 증권업계에서는 데이터나 로그를 분석, 전처리, 후처리 가공을 하는 용도로도 많이 사용한다. 특히 grep, sed는 간단한 문자열 치환이나 삭제 정도의 처리만 가능한데 비해 awk는 문자열이나 패턴을 숫자로 파싱하여 계산하는 작업을 지원한다. awk의 장점은 다음과 같다.숫자(정수, 실수)를 지원한다.삼각함수, 지수, 로그, 제곱근, 랜덤변수 등의 수학적 기능을 제공한다...
* TOC부모와 자식 프로세스의 관계fork와 fork-execvfork와 문제점posix_spawn의 등장2줄 결론 fork란?fork는 유닉스/리눅스 계열에서 새로운 프로세스를 만드는 표준 함수이다. 그런데 fork는 새로운 프로세스를 만들 때 기존 프로세스를 복제하는 방식을 사용한다. 이 때 원본 프로세스를 부모 프로세스(parent process)라고 부르고 새로 복제된 프로세스를 자식 프로세스(child process)라고 부른다. 1. 부모와 자식 프로세스의 관계현실 세계에서 부모와 자식은 끊을 수 없는 강한 연결점이 있지만, 유닉스 계열의 부모와 자식 프로세스는 그런 것과는 상관이 없이 이름이 지어졌다. 그냥 유전자가 복제되듯이 정적 자원 만을 복제하는 것이라고 생각하면 된다.정적 자원에는 ..
리눅스나 유닉스에서 사용되는 메시지큐는 XSI와 POSIX 두가지 방식이 있다. 이 두 메시지큐의 모델과 프로그래밍 방식에 대해 간략하게 살펴보자. 1. 유닉스 표준과 IPC 현재 유닉스 계열(리눅스 포함)은 OpenGroup의 SUS(Single UNIX Specification) 표준을 따르고 있다. SUS는 기존에 나왔던 유닉스 계열의 다양한 표준인 POSIX, SVR4(SysV Release4), BSD 등의 표준을 통합했기 때문에 같은 기능이 중복된 경우가 꽤 있다. 그 중에서도 IPC(Inter-Process Communication) 기법이 대표적이다. IPC는 좁은 의미로는 세마포어, 공유메모리, 메시지큐를 다루고 넓은 의미로는 파일, 소켓, 메모리맵 등을 포함한다. 하지만 일반적으로 IP..
gettimeofday는 유닉스, 리눅스 시스템 프로그래밍에서 시간을 구할 때 쓰는 함수이다. 마이크로초(백만분의 1초)단위로 구할 수 있는 기능을 가지고 있어서 많이 사용되는 함수이다.그러나 앞으로 gettimeofday는 지양해야 할 함수가 되었다. 왜냐하면 gettimeofday는 2008년도 유닉스 표준인 SUSv4-2008에서 앞으로 제거될 구식(obsolescent) 함수로 지정했기 때문이다. 물론 하위 호환성을 위해 gettimeofday 함수는 계속 제공될 것이다. 하지만 몇몇 시스템에서는 기본 라이브러리에서 제거되고, 구식 라이브러리를 따로 포함해야 사용할 수 있게 될지도 모르기 때문에 멀티 플랫폼 용으로 개발된다든지 하는 경우라면 gettimeofday를 쓰지 않는 편이 좋다. 참고로 ..
* 주의: 여기서 설명하는 getline은 C++의 getline 메소드와는 다른 것입니다. 혼동하지 마시기 바랍니다. fscanf는 기본적인 입력 받는 함수로 모든 C언어 기초 책에서 소개되고 있지만 개행 문자(new line)나 공백 처리에 곤란한 부분이 있어서 실무환경에서는 fgets + sscanf 로 대체하여 사용하는 편이다. 하지만 scanf는 여전히 형식화된(formatted) 데이터, 즉 숫자나 문자, 공백으로 띄워진 문자열들을 처리할 때는 편리하다는 장점도 있다. 그렇다고해서 scanf의 여러가지 문제점이 완전 해결되는 것은 아니지만!! * scanf의 문제점 scanf("%c", ...) 로 읽는 경우에는 개행 문자를 사용자 입력으로 처리하기 때문에 문자 입력 후 엔터를 치면 다음번 s..
이 글은 2008년도에 개정된 POSIX.1-2008 표준에 추가된 함수, dprintf에 대해 소개하는 글입니다. TOC 1. 형식화된 입출력에서 printf 란? 2. printf와 고수준 파일 처리 3. 새로운 형식화된 출력 dprintf 4. 결론 과거 타자기부터 컴퓨터까지 수 많은 발전 중에 가장 중요한 것중에 하나는 데이터를 정확하고 멋드러지게 출력하는 것이었다. 그러다보니 프로그래밍에서 빠질 없는 것이 바로 형식화된 입출력(Formatted Input/Output)이다. (형식화된 입출력이란 데이터의 형태를 변환하여 읽거나 출력하는 것으로 로케일 변환, 자릿수 맞춤, 들여쓰기(tab) 등등의 기능을 말한다.) 1. 형식화된 입출력에서 printf 란? 형식화된 입출력에서 printf는 출력 ..