본문 바로가기

UNIX 프로그래밍12

[9주차 개념] 파이프 🚩 pipe : 한 프로세스에서 다른 프로세스로의 단방향 통신 채널, write와 read로 data 통신 가능 #include int pipe(int filedes[2]); filedes[0] : 읽기용 filedes[1] : 쓰기용 성공시 0, 실패 시 -1 return process 당 open file 수, 시스템 내의 file 수 제한 🚩 pipe의 특성 FIFO 처리 lseek은 작동하지 않음 ( 읽은 데이터는 사라짐 ) pipe는 fork()에 의해 상속 가능 🚩 pipe를 이용한 단방향 통신 (부모 → 자식) pipe 생성 fork()에 의해 자식 생성 & pipe 복사 부모는 읽기용, 자식은 쓰기용 pipe를 close main() { char ch[10]; int pid, p[2]; i.. 2023. 11. 14.
[8주차 개념] 메모리 매핑 🚩memory mapping memory mapping : file을 프로세스의 memory에 mapping. 즉, 프로세스에 전달할 데이터를 저장한 파일을 직접 프로세스의 가상 주소 공간으로 매핑한다. 따라서, read, write 함수를 사용하지 않고도 프로그램 내부에서 정의한 변수를 사용해 파일에서 데이터를 읽거나 쓸 수 있다. 사용 방법 #include void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); addr : 매핑할 메모리 주소 len : 메모리 공간의 크기 prot : 보호 모드 ( PROT_READ : 읽기 허용, PROT_WRITE : 쓰기 허용 ) flags : 매핑된 데이터의 처리 방법을 지.. 2023. 11. 10.
[7주차 개념] 시그널 🚩 signal : software interrupt kernel → process or process → process 자료 전송보다는 비정상적인 상황을 알릴 때 사용 예) program 수행 중 Ctrl + C ( Interrupt key ) → kernel이 문자 감지, 해당 session에 있는 모든 process 에게 "SIGINT"라는 signal을 보냄 → 모든 process는 종료! 그러나, shell process는 무시! signal은 에 정의 signal의 기본 처리 1. 종료 (signal에 의한 정상 종료) 2. 코어 덤프 후 종료 (signal에 의한 비정상 종료) - core file (종료 직전의 memory의 상태) 생성 후 종료 3. 중지 4. 무시 🚩 child proc.. 2023. 11. 10.
[4주차 실습] UNIX 실습 문제 1. access() 명령을 이용하여 “data1"이라는 이름의 파일이 존재하는지, 존재한다면 사용자에 의한 읽 기와 쓰기가 모두 가능한 파일인지를 알아보는 프로그램을 작성하시오. #include #include #include #include #include int main(){ struct stat buf; if(access("data1", F_OK)==0){ if(access("data1", R_OK| W_OK)==0){ printf("읽고 쓰기 가능한 파일입니다."); }else{ printf("권한이 없습니다."); } } else{ printf("파일이 존재하지 않습니다."); } return 0; } 2. scanf()로 두 개의 문자열을 입력받은 후, link.. 2023. 10. 22.