21040624서상우수업보고서
레코드 잠금
fcntl() 함수
기능: 파일제어
기본형: int fcntl ( int fd, int cmd, struct flock * lock);
fd : 제어할 파일의 파일 식별자
cmd : 동작 지정
lock : 레코드 잠금에서 사용되는 인수
반환값: 실패 -1
(25_1)
(25_2)
(결과)
F_SETLKW로 레코드 잠금설정하기
F_SETLK 는레코드가 다른 프로세스에 의해 이미 잠겨 실패 했을때 실패를 반환하는 반면
F_SETLKW 는 성공할떄 까지 기다린다.
파일을 이용해 프로세스간 통신하기
레코드 잠금 정보 얻어오기
파이프를 이용한 통신
popen()함수
기능 : 파이프를 이용해 명령어를 실행한다.
기본형 : FILE * popen(const char * command , const char * type);
command : 실행할 명령어
type : 통신형태
반환값 : 성공:파일포인터
실패:NULL
헤더 파일 : <stdio.h>
pclose()함수
기능 : 파이프를 닫는다.
기본형 :int pclose(FILE * stream);
stream : 닫을 파이프의 파일 포인터
반환값 : 성공 : 종료상태
실패 : -1
헤더 파일 : <stdio.h>
(25_7)
(25_8)
pipe 함수를 이용한 통신
pipe() 함수
기능 : 파이프를 생성한다.
기본형 : int pipe(int filedes[2]);
filedes[0] : 파이프로부터 데이터를 읽어들일 때 사용하는 파일 식별자
filedes[1] : 파이프에 데이터를 쓸 때 사용하는 파일 식별자
변환값 : 성공: 0
실패:-1
헤더 파일 : <unistd.h>
(25_9)
(25_12)
FIFO를 이용한 통신
mkfifo()함수
기능 : FIFO를 생성한다.
기본형 :int mkfifo (const char * pathname, mode_t mode);
반환값 : 성공 : 0
실패 : -1
헤더파일 : <sys/types.h>
<sys/stat.h>
(25_13)
(25_14)
메시지 큐를 이용한 통신
msgget() 함수 : 메시지 큐를 생성한다
msgsnd()함수 : 메시지 큐를 전송한다
msgrcv()함수 : 메시지 큐에 있는 메시지를 수신한다
msgctl()함수 : 메시지 큐를 제어한다
(26_1)
(26_2)