Network Programming(4)
-
Serial Port Programming under Linux using C/C++
UNIX계열 OS에서는 시리얼 포트를 파일로 표현한다. 일반적으로 /dev/아래에 tty로 시작하는 이름으로 표시되어 있다. 시리얼 포트에 wrtie를 하면 파일을 write하는 것이고 시리얼 포트에서 read 하는것은 파일로부터 read하는 것과 같다. 표시되는 파일들의 예로는 다음과 같은 것들이 있다. /dev/ttyACM0 : USB에의 Abstract Control Model modem을 의미. Arduino UNO와 같은 것들이 여기에 표시됨. /dev/ttyPS0 : Yocto 기반의 Linux를 이용하는 Xilinx Zynq FPGA의 default serial port.(Getty connection) /dev/ttyS0 : Standard COM port. 최근의 데스크탑, 노트북은 CO..
2022.07.17 -
3. 공유 메모리
공유 메모리는 프로세스와 프로세스 사이에 공유할 수 있는 메모리 공간을 지정하는 방법. 공유 메모리 사용 과정 : 공유 메모리 객체를 만드는 과정 공유 메모리의 객체의 크기를 설정하는 과정 공유 메모리 객체를 프로세스 메모리 영역과 맵핑하는 과정 공유 메모리 객체 생성 int shm_open(const char *name, int oflag, mode_t mode); name : 공유 메모리 객체를 지시하기 위한 이름 oflag : int 형 비트 마스크로 open되는 공유 메모리의 특성 설정(fcntl.h에서 정의) mode : 권한 정보를 설정하기 위한 데이터형(sys/stat.h에서 정의) shm_open함수는 특정 이름을 갖는 공유 메모리 객체를 생성한 후에 그 객체에 접근할 수 있는 파일 디스크..
2022.07.04 -
2. Pipe
두 프로세스 간 통신을 위해서는 파이프를 생성해야 함. 파이프는 프로세스에 속하는 자원이 아니고 소켓과 마찬가지로 운영체제에 속하는 자원이므로 fork함수의 호출에 의한 복사 대상이 아님. 파이프를 프로세스 사이의 통신을 위해 사용하려면 fork함수와 함께 사용해야 함. 부모 프로세스에서 파이프를 생성하고 fork를 통해 자식 프로세스를 생성하면 파이프에 접근할 수 있는 파일 디스크립터들이 복사됨. 따라서 부모 프로세스와 자식 프로세스 사이의 데이터 교환이 가능해지며 자식 프로세스들끼리도 파이프를 이용하여 통신하는 것이 가능함. int pipe(inf filedes[2]); filedes[0] : 파이프로부터 데이터를 수신하는데 사용되는 파일 디스크립터가 저장됨. 즉 파이프의 출구. filedes[1] ..
2022.07.04 -
1.Signal
Socket API : 네트워크 기술로 연결되어 있는 서로 다른 호스트 상에 존재하는 두 프로세스 사이의 통신을 가능하게 함. 운영체제는 다양한 사건에 대하여 시그널 번호를 정의하고 해당 사건이 발생했을 때 프로세스에게 시그널을 전달. 시그널이 프로세스로 배달되면 프로세스는 해당 시그널을 위하여 정의된 핸들러 루틴을 실행. 에 시그널이 양의 정수 매크로로 정의되어 있음. kill -l 명령어로 확인 가능. sigaction 함수 int sigaction(int sig, const struct sigaction * act, struct sigaction * oldact ); sigaction 함수는 시그널 핸들러 정보를 관리하기 위해 sigaction이라는 구조체를 사용함. struct sigaction ..
2022.07.04