시스템콜의 종류
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

않는다.
fork() 시스템 콜이 성공적으로 수행되면 그 순간에 하나의 프로세스가 두 개의 프로세스로 되는데 두 프로세스는 수행할 일을 구분하기 위하여 두 프로세스의 fork() 리턴문이 서로 다르다는 것을 이용한다
부모 프로세스에게는 fork()의 리턴값으로 새로 만들어진 자식 프로세서의 PID가 리턴되며, 자식 프로세스에게는 fork()의 리턴값이 0이 된다.
한편 fork() 문이 실패한 경우 부모 프로세스에서는 -1을 리턴하고, 자식 프로세스는 생성되지 않는다.
PID가 135인 어떤 프로세스가 fork()를 수행하여 자식 프로세스를 만드는 그림
예를들어 아래와 같은 프로그램 코드를 수행하면 fork() 문을 만나는 순간에 두 개의 프로세스가 생성되는데 그 중 자식 프로세스는 fork()의 리턴값이 0이 되므로 child_ work()를 수행하고, 부모 프로세스에서는 fork()의 리턴값이 자식 프로세스의 PID 값(즉 0이 아님)이 되므로 parent_work()를 수행하게 된다.
다음은 fork()의 사용 예로 부모와 자식 프로세스가 같은 이름의 변수를 각각 증가시키고 그 결과를 확인해 보는 예제 프로그램 fork_test.c를 살펴보자
자식 프로세스는 두 개의 변수 global_var과 local_var를 각각 1씩 증가시키며, 부모 프로세서는 2초 후에 이 두 변수를 각각 5씩 증가시킨다
이 프로그램 실행 결과는 다음과 같다.
read()
read는 화일로부터 임의 길이의 문자나 바이트를 호출 프로그램의 버퍼로 읽어들이기 위해 사용된
다. 이때 버퍼는 문자형의 배열로 정의되어야 한다.
read("파일“, 어디다가, 얼마만큼 );
write()
write 시스템 호출은 read의 정반대이다. 즉, 이 호출은 프로그램 버퍼에 있는 문자 배열 자료를 외부 화일에 기록한다
#include
ssize_t write(int fd, const void *buf, size_t count);
read()에 의해 버퍼에 있는 내용을 write는 buf로 시작하는 버퍼에서 파일 기술자 fd로 참조되는 파일에 count 바이트까지를 쓴다. 이것은 실제로 기록된(저장된) 바이트 수를 반환한다. 이 값은 파일 기술자에 에러가 있었거나, 또는 기반이 되니는 디바이스 드라이버의 블록 크릭에 따라 nbytes 보다 적을 수 있다. 함수가 0 을 반환하면 어떤 데이터가 기록된지 않았음을 의미하고 , -1 이면 write 호출에 에러가 있었음을 의미한다. 에러는 errno 전역 변수에 지정될 것이다
프로그램은 단순히 표준 출력에 메시지를 출력한다. 프로그램이 끝날때 열려 있던 파일 기술자는 모두 자동으로 닫히므로 이것을 직접 닫을 필요가 없다. 그러나 버퍼형 출력을 다룰 때에는 이렇게 자동으로 닫히지 않을 것이다
실행결과
close()
파일 닫기
#include
int _close(int handle);
int close(int handle);
close는 handle과 연결되어 있는 파일을 닫는다.
사용예
실행결과

키워드

추천자료

  • 가격1,000
  • 페이지수7페이지
  • 등록일2008.12.18
  • 저작시기2008.12
  • 파일형식한글(hwp)
  • 자료번호#506480
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니