GithubHelp home page GithubHelp logo

posix-message-queue-example's Introduction

POSIX-Message-Queue-Example

POSIX-Message-Queue-Example

다음은 POSIX Message Queue에서 발생할 위험 요소를 소개한다.

Message Queue의 이름

Message Queue의 이름을 프로세스 PID 또는 PID와 관련된 값으로 지을 경우, 프로세스를 생성할 때마다 Message Queue가 생성되어, Too many files open 에러가 발생할 수 있다.

Many_mq 예제의 경우, 프로세스를 실행할 때마다 thread를 통해 200개의 Message Queue가 생성되며, 각 서버와 클라이언트 Thread는 0부터 99까지의 값을 공유한다.

이때, 서버에서 Message Queue를 생성할 때 서버의 PID와 Thread 번호를 조합하여 생성한다. 생성한 Message Queue 이름은 input.db 파일을 통해 공유했다.

Share_text 예제의 경우, Thread를 사용하지 않고 서버의 PID로 Message Queue를 생성하며, 서버와 클라이언트 프로세스를 실행할 때마다 서버의 PID에 따라 Message Queue가 추가된다. 서버와 클라이언트는 클라이언트가 입력한 문자를 공유한다. 마찬가지로, 생성한 Message Queue 이름은 input.db 파일을 통해 공유했다.

Too many files open 해결방법

  • ulimit -q command를 통해 Message Queue에 사용될 용량을 조절할 수 있다.

ulimit -q unlimited를 통해 무제한으로 설정할 수 있다.

  • /dev/mqueue 디렉토리 내 Message Queue를 삭제한다.

아래 command를 통해 /dev/mqueue 내 Message Queue를 마운트할 수 있다. mkdir /dev/mqueue mount -t mqueue none /dev/mqueue

/dev/mqueue 내 Message Queue

  • mq_unlink((const char *)mq_name) 코드를 추가하여 서버가 종료할 때 메세지 큐를 삭제한다.

posix-message-queue-example's People

Contributors

aqaqsubin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.