-
[Linux] 기말 헷갈림 모음LinuxProgramming 2023. 12. 19. 11:34
[signal]
WIFSIGNALED(status) : signal로 exited 되었으면
WTERMSIG(status) : terminate 시킨 signal 확인
SIG_IGN
SIG_DFL
fork exec 하면 signal table도 복사됨
alarm은 자식까지 전달 x
alarm(0) -> alarm 취소
sighandler 한테는 동일한 종류의 signal은 1개만 전송됨
sighandler에서 signal 처리는 stack으로 누적됨
sigprocmask -> signal block
풀기 전까지 BLOCK만 하는거지 푼 후에는 적립된 signal들을 받는다!
적용대상은 인자에 없는데 무조건 이 코드가 쓰여진 프로세스 blocked signal set이기 때문
sigprocmask(SIG_SETMASK, &mask, NULL);
sigprocmask(SIG_UNBLOCK, &mask, NULL);
----------
[mmap]
1. mmap은 애초에 open할때 무조건 READ 퍼미션있게 open해야함(O_RDWR, O_RDONLY)
2. mmap 마지막 인자 무조건 0 아님 page size 배수 -> 아니면 segmentation fault
3. 새로 만들고 ftruncate 안하면 bus 오류
4. 만약 ftruncate로 줄이면 다른건 다 0으로 찬다
----------
[pipe]
FD_SET(파이프번호, &master);
write_end 닫으면 read pipe에게 0 전달
read_end 닫으면 write pipe에게 SIGPIPE signal 전달
fcntl(p[0][0], F_SETFL, O_NONBLOCK);
-> read pipe는 읽을게 없어도 읽기 수행. 뭐가 들어오기 전까지 0을 계속 읽게 됨.
----------
[select]
read가 0이면 write_end가 닫혔다는 뜻
따라서 FD_CLR로 해당 파이프를 fd_set에서 0으로 만들어주면 됨
timeout
일정기간 조사하는 fd_set에 변화가 없으면 종료
----------
[fifo]
open( // , O_NONBLOCK);
fifo는 두 명 다 준비되어야 통신가능
O_NONBLOCK이면 상대방이 준비 안되어 있으면 -1 return 하면서 걍 종료
----------
[msgqueue]
mtype
long type의 정수
모든 message의 첫부분에 있어야한다
양수만 가능!!
----------
[semaphore]
ushort buf1[3] = {1,2,3}; -> semaphore 초기화
struct sembuf p_buf[2] = {{0,-1,0}, {1,-1,0}}; -> semop 연산
semval은 0 아님 양수만 가능
semget는 무조건 0600. sem값을 바꾸는 semop를 하기 위해서는 무조건 READ WRITE가 가능해야하기 때문.
semncnt(nqueue)
semwait 프로세스 수. 자신이 연산을 할 수 있을때까지 기다리는 프로세스 수
semzcnt(zqueue)
semaphore zero count. 0이 되길 기다리는 프로세스 수
p_buf = {0,0,0} (0연산)
-> sem이 0될때까지 기다리는 semop
semctl(semid, IPC_RMID, 0);
----------
[shared memory]
shmctl(shmid, IPC_RMID, 0);
----------
[flock]
fcntl(fd, F_SETLK, &lock); // nonwait lock or unlocking
fcntl(fd, F_SETLKW, &lock); // waiting lock
F_RDLCK
F_WRLCK'LinuxProgramming' 카테고리의 다른 글
[Linux] 2023 fall unix programming 후기 (0) 2023.12.27 [Linux] flock() (record locking) (0) 2023.12.15 [Linux] producer consumer in bounded array (1) 2023.12.10 [Linux] 과제4 : 카카오톡 (1) 2023.12.08 [Linux] shared memory (2) 2023.12.08