728x90
반응형

유닉스 4

UNIX - [Record Locking]

사용법 #include int fcntl(int filedes, int cmd, struct flock *ldata); /* > filedes : lock을 설정 하려는 file의 descriptor > read-lock은 O_RDONLY/O_RDWR로 open된 file에 한해서 적용 가능 > write-lock은 O_WRONLY/O_RDWR로 open된 file에 한해서 적용 가능 > cmd : > F_GETLK : lock 정보 얻기 > 해당 정보는 세 번째 인수에 저장 > F_SETLK : non-blocking locking or unlocking > lock 설정에 관한 자세한 정보는 세 번째 인수에 지정 > F_SETLKW : blocking locking > lock 설정에 관한 자세한 정..

UNIX - [PIPE - 2]

FIFO pipe는 동일 ancestor를 갖는 프로세스들만 연결 가능. fifo는 모든 프로세스들을 연결 가능. UNIX의 file 이름을 부여 받는다. 소유자, 크기, 연관된 접근 허가를 가진다. 일반 file처럼, open, close, read, write, remove가 가능하다. fifo는 pipe와 다르게 UNIX의 파일 이름을 부여 받는다. 따라서 파일처럼 여러 권한 설정과 파일 크기를 가지고, open, close, read, write, remove 등의 시스템 콜을 사용 가능하다. 사용법 fifo 만들기 #include #include int mkfifo(const char *pathname, mode_t mode); // mode는 보통 0666으로 그냥 줌 → fifo open (..

UNIX - [SIGNAL]

signal이란? → 소프트웨어 인터럽트 (하드웨어가 아니라 소프트웨어적으로 interrupt를 발생시키는 방법) 인터럽트(interrupt)를 발생시키는 기능을 하는 시그널은 시스템에서 아주 중요하게 사용된다. 예를 들면 터미널에서는 흔히 Control + C 을 사용해서 실행 중인 프로세스를 종료시킨다. 이는 SIGINT(interrupt signal)라는 미리 정의된 시그널을 프로세스에게 보내서 강제 종료 시키는 방법이다. 우리는 이렇게 알게 모르게 시그널을 사용 중이다. 인터럽트(Interrupt)란? 인터럽트란 CPU가 하던 일을 멈추게하고(혹은 아무 것도 안하고 있는 상태를 멈추고) 끼어드는 것으로 CPU에 할당된 작업을 변경하는데 사용할 수 있다. 일반적으로 CPU는 Fetch stage -..

UNIX - [소켓 프로그래밍 예제 - 2]

👉 이 절에서는 소켓을 이용한 간단한 예제 프로그램을 작성해본다. 소켓에는 같은 시스템에 있는 프로세스끼리 데이터를 주고받을 때 사용하는 유닉스 도메인 소켓과 다른 시스템의 프로세스와 통신을 하는 인터넷 소켓이 있다. 이 절에서는 예제를 통해 각각의 사용 방법을 알아보자. 유닉스 도메인 소켓 예제 유닉스 도메인 소켓(unix domain socket)은 같은 시스템에서 통신이 일어나므로 TCP/IP 프로토콜을 직접 이용할 필요가 없다. 따라서 유닉스 도메인 소켓에서 사용하는 소켓 주소 구조체의 항목도 IP 주소가 아닌 경로명을 지정하도록 되어 있다. 이는 파이프나 시스템 V IPC에서 특수 파일을 통신에 사용하는 것과 같다고 생각하면 된다. 소켓 주소 구조체의 항목이 다른 것을 제외하면 유닉스 도메인 소..

728x90
반응형