open(), read(), write(), close(), lseek(), ioctl() 등.

1. open() 함수
형식:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char* pathname, int flags [, mode_t mode]);

용도 :
디바이스 파일을 읽거나 쓰기 위해 파일을 연다. 이때 flags에 지정한 속성으로 pathname에 지정한 이름의 파일을 연다.

매개변수:
pathname: 오픈할 디바이스 파일의 이름(경로 포함)
flags: 디바이스 파일에 접근하는 방식 (OR연산자로 여러 flag를 한꺼번에 지정할수도 있다.)
mode : 파일을 닫을 때 설정할 권한 설정

 flags 의미 
 O_RDONLY  읽기 전용
 O_WRONLY  쓰기 전용
 O_RDWR  읽기 및 쓰기
 O_CREAT  파일 생성(파일이 존재하면 작업 안함)
 O_TRUNC  파일 크기를 0으로 연다. O_CREAT와 함께 사용한다.
 O_NONBLOCK, O_NDELAY  비블록 모드 
 O_SYNC  쓰기의 동기화, 디바이스 파일에 쓰기를 하면 물리적인 하드웨어에 기록될 때까지 태스크는 블록됨.
 O_NOCTTY  터미널 디바이스 파일인 경우 직렬 디바이스로 속성 설정.
 O_BINARY, O_TEXT  문서를 바이너리로 열거나 텍스트 모드로.

반환 값: 성공 시 파일 디스크립터 값을 반환하고, 실패 시 -1을 반환한다.

2. close() 함수
형식:
#include <unistd.h>
int close(int fd);

용도: open()함수에서 반환한 파일 디스크립터 fd에 해당하는 디바이스 파일을 닫는다.

매개변수:
fd: 파일 디스크립터

반환 값: 성공 시 0을 반환하고, 실패 시 -1을 반환한다.

3. read() 함수
형식:
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

용도:
디바이스 파일로부터 데이터를 읽는다. 파일 디스크립터 fd를 가지는 디바이스 파일에서 buf로 시작하는 버퍼에 count 크기의 바이트를 읽는다. 만일 count가 0이라면 0을 반환한다. count값은 SSIZE_MAX보다 작아야 하며, 만일 count가 SSIZE_MAX보다 크다면 결과는 예측할 수 없다.

매개변수:
fd: 파일 디스크립터
buf: 읽은 데이터가 저장될 메모리 공간의 주소
count: 데이터 크기

반환 값:
성공 시 읽은 바이트 수를 반환하며, 실패 시 -1을 반환한다. 이때 성공하는 경우 파일 포인터의 위치는 읽은 크기만큼 이동한다.

4. write() 함수
형식:
#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);

용도: 디바이스 파일에 데이터를 쓴다. buf가 가리키는 버퍼에서 파일 디스크립터 fd를 가지는 파일에 count 바이트 크기의 데이터를 쓴다. 이때 count값은 SSIZE_MAX보다 작아야 한다.

'Programming > General Topics' 카테고리의 다른 글

C의 메모리 관리 구조  (0) 2010.06.12
exec() family  (0) 2009.10.02
strerror()  (0) 2009.10.02
perror()  (0) 2009.10.02
Programming Problems 2.22  (0) 2009.10.02
저수준 파일 입출력 함수  (0) 2009.10.02
Posted by exahz
아무런 글들..2009.09.24 00:06

- 아래 내용을 터미널에 입력한다.
$ sudo setkeycodes 71 122
$ sudo setkeycodes 72 123

- 키보드의 키 값을 확인한다.
$ xev

프로그램이 뜨면 한/영, 한자키를 눌러 키 값을 확인한다.
해당값에 따라 아래와 같이 입력하면 한/영, 한자키가 사용가능하게 된다.
$ xmodmap -e ’keycode 108 = Hangul’
$ xmodmap -e ’keycode 105 = Hangul_Hanja’

- 부팅시 자동적용을 위한 설정
- Xmodmap 파일을 만들어 두줄을 입력한다.

$ gedit ~/.Xmodmap

아래 내용 붙여 넣기
keycode 108 = Hangul
keycode 105 = Hangul_Hanja

- bootmisc.sh 파일을 열어서 두 줄을 삽입한다.
$ sudo gedit /etc/init.d/bootmisc.sh

아래 내용 붙여 넣기
setkeycodes 71 122
setkeycodes 72 123

'아무런 글들..' 카테고리의 다른 글

위닝카오스 D  (0) 2010.06.19
리눅스, 스왑 파티션 추가/생성  (0) 2010.04.18
우분투 한/영, 한자키 설정  (0) 2009.09.24
Posted by exahz

티스토리 툴바