fork로 주기적으로 exec를 하는 방법을 알아보고 있었다. 잘못하여 이렇게 썼다. while(1){ fork(); } 이런 **ㄹ!#ㄲㄴㅇㄹㅉㅆㄲ$!!!! 게다가 sudo로 실행했다. ssh, ping 등 명령어에 응답하지 않는다. 하드웨어에 접근할 수 없었는데, 다행히 crontab에 등록한 재부팅 명령어는 동작했다.
[카테고리:] 생활코딩
posix shared memory, p325~p335
fork로 나온 parent, child와 다르게 완전 다른 프로세스간 shared memory로 데이터를 공유할 수 있다. pi@raspberrypi:~/Project/cCode/IPC/shared_memory $ cat make_memory.c #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/stat.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <unistd.h> #include <sys/mman.h> #define FILE_MODE 0666 int main(int argc, char **argv) { int c, fd, flags; char *ptr; off_t length; flags =…… posix shared memory, p325~p335 계속 읽기
shared memory introduction, p303 ~ p315
semaphore로 process간 데이터를 주고 받을 줄 알았는데, 아니었다. semaphore로 동기하고 process간 데이터 전달은 메모리 공유로 한다. #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/stat.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <unistd.h> #include <sys/mman.h> #define SEM_NAME “mysem” #define FILE_MODE 0666 struct shared{ sem_t mutex; int count; } shared; int main(int argc, char **argv) { int…… shared memory introduction, p303 ~ p315 계속 읽기
다른 process간 named semaphore 사용(실패)
세마포어로 데이터를 전달할 줄 알았으나, 동기화만 한다. 프로세스간 데이터를 공유할 방법이 없다. 다음 예제 shared memory로 공유한다. named semaphore는 잘 동작하는 듯 한데, 검증을 못했다. pi@raspberrypi:~/Project/cCode/IPC $ cat named_semaphore_prod.c /* include main */ #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <semaphore.h> #include <sys/stat.h> #include <errno.h> #include <signal.h> #define NBUFF 10 #define SEM_MUTEX “mutex”…… 다른 process간 named semaphore 사용(실패) 계속 읽기
memory based semaphore, unix network programming p241
이름있는 세마포어 말고 메모리에 올려 사용하는 방법도 있다. 책은 sem_init(…, 두번째 arg,…)에서 두번째 입력하는 숫자를 thread에서 공유할 거면 0, 프로세스간 할거면 1로 하라고 한다. 1로 하여 thread도 잘 된다. named semaphore는 포인터를 선언했고 파일에 영역을 만들었다. 이와 다르게 직접 데이터를 선언하고 주소로 넘겨줘야 한다. ipcs로 보일 법 한데, 안 보인다. 무엇이 잘못되었는지 모르겠다. /* include…… memory based semaphore, unix network programming p241 계속 읽기