목록Linux/TCP IP Socket Programming (19)
min's devlog
지정한 프로세스에게 메시지를 전송하는 코드 파일명 : qsnd_pid.c 컴파일 : gcc -o qsnd_pid qsnd_pid.c 실행 : qsnd_pid 1234 #include #include #include #include #include #include #define BUFSZ 512 //메시지 내용 구조체 선언 typedef struct_msg{ long msg_type; char msg_text[BUFSZ]; }msg_t ; int main(int argc, char **argv){ pid_t pid; int len, qid; msg_t pmsg; //전송할 메시지 key_t key; //메시지 큐 key if(argc != 2){ printf("USAGE : %s msqkey",argv[0..
파이프를 통해 에코메시지를 전달하는 UDP에코서버 - 부모 프로세스는 write만 하고 자식 프로세스는 read만 하는 코드이다. 파일명 : udpserv_pipeecho.c 컴파일 : gcc -o udpserv_pipeecho udpserv_pipeecho.c 실행 : udpserv_pipeecho 9999 #include #include #include #include #include #include #include #include #define MAX_BUFSZ 512 //파이프에 쓰는 데이터구조 typedef struct mesg{ struct sockaddr_in addr; //클라이언트 주소 char data[MAX_BUFSZ]; //에코할 데이터 }mesg_t void child_start(..

파이프 ( | ) -프로세스와 프로세스간의 통신 채널 예) 명령어 ps가 중간의 파이프를 통해 grep이라는 프로세스에게 전달하는 방식 ps -ef |grep : 이 컴퓨터의 모든 프로세스 상태를 보여준다. (화면단위로 보려면 ps -ef | more) -파이프를 이용한 프로세스간의 통신 파이프 생성 파이프를 열기 위해서는 pipe()를 사용한다. 하나의 파이프를 생성하면 두개(읽기, 쓰기)의 파일 디스크립터가 생성된다. #include int pipe(int fd[2]); //배열 (fd[0]은 읽기용-read, fd[1]은 쓰기용-write) 부모프로세스를 예로 들면, fd[1]을 write로 쓰고 fd[0]을 read로 쓰는데 단방향, 한 방향에 하나만 선택해서 사용할 수 있다. (-단방향 스트림 ..

프로세스의 종료 모든 프로세스는 종료할 때 자신의 부모프로세스에게 SIGCHILD 시그널을 보낸다. 부모 프로세스는 이 시그널을 받아 처리할 수 있다. if fork 결과 값이 0이면 childprocess. child 종료시 fork로 sigchild라는 시그널을 보내고 종료한다. child의 종료상태를 알려면 wait라는 함수를 이용해서 child가 종료할때까지 기다릴 수 있다. wait() 부모프로세스가 자식의 종료시점을 알거나 종료 상태 값을 알기위해 wait()나 waitpid() 함수를 이용한다. pid_t pid; int stat; //부모 프로세스의 일처리 pid = wait(&stat);//자식 프로세스가 종료될 때까지 이곳에서 블록됨 //자식 프로세스 종료 후에 처리할 일 wait로 자..

alarm() alarm()dms 시그널을 전달하기 위한 알림을 설정한다. 예를 들어, alarm 세팅 후 5초 경과시 sigalrm이라는 시그널이 발생했을 때 어떤 동작을 처리할지 코드를 작성하는 것이다. alarm에 의한 read()의 인터럽트 확인 파일명:alarm_intr.c 컴파일: gcc-o alarm_intr alarm_intr.c 사용: alarm_intr #include #include #include #include void catch(int sig){ //시그널 핸들러 printf("time out\n"); return; } int main(int argc, char *argv[]){ int n; char buf[128]; struct sigaction a; a.sa_handler=c..