리눅스 IPC 프로그래밍 - 이론과 실습

리눅스 IPC 프로그래밍 - 이론과 실습

(6개의 수강평)

147명의 수강생
Back-EndLinux
55,000원
지식공유자 · ProgCoach4U
29회 수업· 총 11시간 27분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 중급이상
에스원 프로필

컴파일 질문입니다 에스원 25일 전
우분투(Ubuntu 16.04.4)환경에서  리눅스IPC프로그래밍 실습을 하고 있습니다.  mq_posix.c를 make로 컴파일 시도했지만 mq_posix.c:(.text+0x31): undefined reference to `mq_open' mq_posix.c:(.text+0x75): undefined reference to `mq_getattr' /tmp/cc5d8SvV.o: In function `do_send': mq_posix.c:(.text+0x1a9): undefined reference to `mq_send' /tmp/cc5d8SvV.o: In function `do_recv': mq_posix.c:(.text+0x248): undefined reference to `mq_receive' 이런 오류가 나오면서 함수들을 찾지 못하더라구요 . 헤더파일들도 정상적으로 include 한 상태였는데도요. 구글링 해서 컴파일에 "-lrt"를 추가하면 된다고 해서 gcc -g -Wall -o mq_posix mq_posix.c -lrt 라는 명령으로 컴파일을 했더니 성공했습니다 원초적인 질문인거 같은데.. 왜 선언한 헤더파일의 함수를 못 찾았고 lrt라는 명령으로 컴파일이 성공했는지 궁금합니다.

1
jglee81 프로필

partial send/recv에 관하여 jglee81 26일 전
어떤 상황에서 partial send 또는 recv 가 발생하는지 그리고 수업에서 partial send, recv를 처리하는 방법에 대한 문의입니다. partial send : - 내 시스템의 send sock buffer가 꽉 찬 경우... - send sock 이 nonblock 옵션인 경우... 맞는지요??? 반면에 partial recv 같은 경우는 어떤지요.  그리고 상대방이 몇 바이트의 패킷을 보낼지 모르는 경우에는 보통 아래 len를 어떻게 설정하나요? 되도록 패킷이 짤리지 않고 받게 하려면 버퍼를 크게 잡고 len를 최대한 크게 하는게 맞는 것인지 그리고 partial recv와는 반대로 2, 3개의 패킷이 한번에 수신되는 경우도 있습니다. 그럼 결국 수신버퍼를 circular Queue 처럼 구현해야 하는 건가요??? 상대방이 어떻게 보내더라도 수신 데이터 파싱할때 데이터 유실없이 구현하는게 목적입니다. 보통 수신 버퍼 관리를 어떻게 하는지 모범(?)사례를 보고  싶습니다.  강사님. 감사합니다.  recv( SockFd, ( char * )&RcvBuf, len, 0 );

1
jglee81 프로필

스레드끼리의 통신에도 적용가능한가요? jglee81 1달 전
사정상 동일 프로세스를 여러사람이 나누어서 작업중입니다. 본 강좌의 IPC 도구들을 동일 프로세스의 여러 스레드 간에도 적용이 가능한지요>>>???

1
염정원 프로필

File Lock API - 정리 table에서 multi-thread 사용가능시.... 염정원 3달 전
교재내용 File Lock API - 정리 table(P15)에서  multi-thread 사용가능시 fcntl()과 flockfile()에서의 의미를 다르게 설명해놓으셨는데요. 두개의 구분이 잘안됩니다. 부언 부탁드립니다.

1
김선진 프로필

WSL Ubuntu에서 메시지 큐 김선진 4달 전
안녕하세요 윈도우10에서 WSL Ubuntu 18.04 LTS 환경에서 수업을 듣고 있는데 메시지큐부터 컴파일은 잘 되는데 실행하면 아래와 같이 나옵니다  mq_open(): Function not implemented init_msgq(): Function not implemented 1. 같은 코드를 CentOS에서 돌려보니 잘 되긴 하는데 윈도우에서 하는 방법은 없을까요? (lsp도 들었는데 지금까지 잘 됐습니다 ) 2. -lrt 옵션을 줘야한다고 되어있는데 Makefile 어디를 수정해야하는지 모르겠어서 gcc 직접 하고 있습니다 ㅠ 답변 부탁드립니다~! ps. 웹 개발자인데 너무 재밌게 잘 듣고 있습니다. 감사합니다

1
JJ 프로필

shared memory(14강) live programming file mapping 에 관한 질문입니다. JJ 5달 전
monitor( ) 코드에서 ' close(fd); ' 가 while 문 전에 위치하는데, 이 부분이 잘 해석이 안됩니다.  얼핏 생각해서는 munmap( ) 처럼 모든 일을 마무리하고 함수를 빠져 나가기 직전에 해 주는 것이 '더 적절한'  것이라 생각했는데, 실제 코드는 별 무리없이 작동하기에 더 해석이 안되는 것 같습니다.  file mapping 을 통한 shared memory 방식은 실제로는 file I/O 이므로, mmap( ) 이후에 함수 빠져나가기 직전까지  계속해서 스트림이(이 표현이 맞는건지는 잘 모르겠네요..) 살아 있어야 할 것 같은데, 실제로는 그렇게 하지 않아도 코드가 잘 실행되서 잘 이해가 안됩니다. 

1
MIKE 프로필

에러 - bind(): Address already in use MIKE 6달 전
안녕하세요. 서버를 1번실행하고 다시 실행하면 아래와 같은 에러가 발생합니다. 어떻게 처리해야 하나요? bind(): Address already in use 오류가 발생할때 마다 sock_stream_un 파일을 삭제하면 서버를 다시 실행가능합니다만, 다른 방법은 없는지 답변 부탁드립니다.

1
MIKE 프로필

POSIX MQ의 설정 문의 MIKE 6달 전
mq_maxmsg  = 10 mq_msgsize = 8192 mq_open에서 위의 설정을 변경하면 오류가 발생합니다. 해당 값을 변경해서  mq를 만들려면 어떻게해야하나요?

2
Seyoung Cheon 프로필

accept 함수에 대한 문의 Seyoung Cheon 6달 전
accept 함수부분 설명에서 두번째와 세번째 파라미터에 NULL을 준다고 하셨는데, 왜 NULL을 주는 건지? bind함수처럼 지정하면 안되는지 궁금합니다.

1
Andy Ahn 프로필

datagram socket 구현시 recvfrom에서 블록킹됩니다. Andy Ahn 8달 전
https://github.com/positoy/study/blob/master/IPC/06_socket_datagram.c 위 코드인데요. recvfrom의 flag를 MSG_DONTWAIT 으로 변경하면 다음처럼 write가 잘 안된 것처럼 안내합니다. failed to recvfrom: Resource temporarily unavailable 원인이 무엇일까요?

1
유영재 프로필

counting semaphore에 대해서 질문이 있습니다 유영재 11달 전
counting semaphore가 사용되는 예를 알 수 있을까요? 너무 mutex에 집중되다보니 하나의 자원을 동시에 n명이 접근해도 되는건지가 의문이고 어떠한 경우에 사용되는지 모르겠습니다

3
유영재 프로필

read API가 많이 헷갈립니다 유영재 11달 전
snprintf(buf, sizeof(buf), "this is msg from sock_stream"); buf에 저렇게 저장해서 보내면 받는 쪽에서 read로 받을텐데 read API를 자세히 보면 EOF를 만났을 때 0을 리턴한다는데 실제로는 저 버퍼에는 EOF라는 -1이 들어가지 않고, 널문자로 마무리하는데 어떻게 EOF를 인식하는거죠? 자동으로 들어가는건가요?

1
유영재 프로필

네트워크 바이트 변환에 대해서 질문입니다 유영재 11달 전
빅 엔디안으로 통일하기 위해서 전송하기 전에 빅 엔디안으로 정렬하는 htons, htonl 함수를 안쓰고, 받는 쪽에서 데이터를 ntohs, ntohl 함수를 써도 동일하게 동작하기는 하나요? 전자쪽이 일반적이라는 것은 알고 있습니다!

1
유영재 프로필

bind man page에 있는 example 실행에 대해서 질문입니다 유영재 11달 전
http://man7.org/linux/man-pages/man2/bind.2.html man page에 있는 예제를 실행하니까 permission error가 떠서 슈퍼 유저로 했더니 실행은 되는데 자꾸 포트 bind하고 풀어주지를 않네요... 1. 왜 저 코드는 permission을 줘야만 하나요? 2. sudo를 주고 했더니, bind를 풀어주지 않고 netstat -tnulp로 조회해서 pid를 죽여도 계속 살아있습니다

2
유영재 프로필

데이터 송수신 함수에 대한 질문입니다 유영재 11달 전
결국 소켓도 하나의 fd니까 read, write로 sendto와 recvfrom을 대체할 수 있다고 생각해서 찾아봤는데 서버 연결 유무에 따라서 사용할 수 있고 없고가 결정된다고 나와있습니다. 즉 TCP는 서버가 연결되어있기 때문에 write, read를 사용할 수 있고, UDP는 아니라고 되어있는데 서버 연결과 read, write에 대해 자세히 설명해주실 수 있나요?

2
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스