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

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

(2개의 수강평)

75명의 수강생
55,000원
지식공유자 · ProgCoach4U
29회 수업 · 총 11시간 27분 수업
평생 무제한 시청
수료증 발급 강좌
수강 난이도 '중급'
Andy Ahn 프로필

datagram socket 구현시 recvfrom에서 블록킹됩니다. Andy Ahn 1달 전

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에 대해서 질문이 있습니다 유영재 3달 전

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

3
유영재 프로필

read API가 많이 헷갈립니다 유영재 3달 전

snprintf(buf, sizeof(buf), "this is msg from sock_stream");

buf에 저렇게 저장해서 보내면 받는 쪽에서 read로 받을텐데

read API를 자세히 보면 EOF를 만났을 때 0을 리턴한다는데 실제로는 저 버퍼에는 EOF라는 -1이 들어가지 않고, 널문자로 마무리하는데 어떻게 EOF를 인식하는거죠? 자동으로 들어가는건가요?

1
유영재 프로필

네트워크 바이트 변환에 대해서 질문입니다 유영재 4달 전

빅 엔디안으로 통일하기 위해서 전송하기 전에 빅 엔디안으로 정렬하는 htons, htonl 함수를 안쓰고, 받는 쪽에서 데이터를 ntohs, ntohl 함수를 써도 동일하게 동작하기는 하나요? 전자쪽이 일반적이라는 것은 알고 있습니다!

1
유영재 프로필

bind man page에 있는 example 실행에 대해서 질문입니다 유영재 4달 전

http://man7.org/linux/man-pages/man2/bind.2.html

man page에 있는 예제를 실행하니까

permission error가 떠서 슈퍼 유저로 했더니 실행은 되는데 자꾸 포트 bind하고 풀어주지를 않네요...

1. 왜 저 코드는 permission을 줘야만 하나요?

2. sudo를 주고 했더니, bind를 풀어주지 않고 netstat -tnulp로 조회해서 pid를 죽여도 계속 살아있습니다

2
유영재 프로필

데이터 송수신 함수에 대한 질문입니다 유영재 4달 전

결국 소켓도 하나의 fd니까 read, write로 sendto와 recvfrom을 대체할 수 있다고 생각해서 찾아봤는데 서버 연결 유무에 따라서 사용할 수 있고 없고가 결정된다고 나와있습니다.

즉 TCP는 서버가 연결되어있기 때문에 write, read를 사용할 수 있고, UDP는 아니라고 되어있는데

서버 연결과 read, write에 대해 자세히 설명해주실 수 있나요?

2
유영재 프로필

Makefile에 대한 질문입니다 유영재 4달 전

선생님 Makefile을 유용하게 쓰고 있는데,

선생님은 Makefile에서 어떤 옵션이 같은 디렉토리 내에서 다수의 main이 존재하는 것인가요?

선생님 Makefile은 헤더파일이 있으면 동작이 안되어서 

https://gist.githubusercontent.com/surinoel/f00b345a8b8e91f80ac7b2084c4b4d90/raw/bcbc54c4b7c5d60916ecbdb949a582cd2b05e0cb/Makefile

제가 헤더파일을 링크하는 Makefile을 작성했는데, 선생님 기능(main이 독립적)을 넣고 싶은데 어떻게 할 수 있나요?

2
유영재 프로필

소켓을 계속 열어두고 받게하려면 어떻게 해야되나요? 유영재 4달 전

한 번만 전송되고 끝나는데 계속 blocking 하는 방법이 있을까요?

1
유영재 프로필

소켓을 이용한 IPC는 기존 다른 방식들과 어떠한 점이 차이가 있나요?? 유영재 4달 전

궁금합니다!

1
유영재 프로필

msgsnd에서 IPC_NOWAIT flag 유영재 5달 전

IPC_NOWAIT 플래그는 만일 메세지 큐가 생기지 않았다면 blocking을 계속 한다는 말인가요?

4
유영재 프로필

ftok에서의 pathname 유영재 5달 전

man page 설명과 선생님 설명을 들어보면 pathname은 그냥 아무의미없이 접근할 수 있는 파일 경로를 서로 약속하는 것인가요?적은 path는 옆에 적는 proj_id와 같이 약속이외에는 아무 의미없는 내용인가요?

2
유영재 프로필

ftok 보장성에 대한 질문입니다 유영재 5달 전

강의 중 ftok를 설명해주시면서 100% unique를 보장하지 못한다고 말씀하셨는데, 이 말은즉슨 수신하는 프로세스가 ftok로 key_t를 리턴하고 이를 msgget으로 넣어도 실제 queue ID를 성공적으로 받지 못한다는 말인가요?

2
유영재 프로필

POSIX와 SysV는 서로 다른 시스템 콜이 아닌가요? 유영재 5달 전

갑자기 든 생각인데 POSIX와 SysV는 서로 다른 인터페이스의 커널 아닌가요? 그런데 어떻게... 제 ubuntu는 아마 POSIX 인터페이스를 따르는 것 같은데 두 개 인터페이스를 동시에 사용할 수 있는 것인가요?

2
유영재 프로필

fifo open시 O_NONBLOCK이 언제 의미가 있나요? 유영재 5달 전

I/O multiplexing 때 의미가 있나요? open 밑에 sleep 코드를 작성해도 open에서 찾지 못하면 바로 끝나는 것 같습니다

 

    printf("call open()\n");
    fd = open(FIFO_FILENAME, O_WRONLY | O_NONBLOCK);
    if (fd < 0) {
        perror("open()");
        return -1;
    }
    strncpy(buf, "hello", sizeof(buf));
    write(fd, buf, strlen(buf));
    close(fd);

1
유영재 프로필

FIFO 만들 때 mode는 어떻게 해석할 수 있나요? 유영재 5달 전

0644로 만들면 프로그램 실행은 r모드로만 되는 것 아닌가요? sudo를 하지 않는다면 제 3자 권한으로 실행이 된다고 알고 있는데.. 지금 이 예제에서는 FIFO를 읽기로만 수행을 한건지 모르겠습니다

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