[질문] shared memory, message queue 사용시..

익명 사용자의 이미지

1) 현재 사용중인 shared memory나 message queue상태를 확인하는 쉘프로
그램이 머지요??

2) message queue나 shared memory 모두 시스템내에서 유일한 식별번호
(key)가 필요하다고 알고 있는데요..
이 번호를 어떻게 정해서 사용해야 하나요??
현재 시스템내에서 사용중인지.. 아닌지 어떻게 미리 알고, 그 key를 정
할 수 있는 지 궁금합니다

익명 사용자의 이미지

man ipcs

익명 사용자의 이미지

쉐어드 메모리상태를 보는것은 아래와 같고

#ipcs

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x30010000 524288 shmman 666 8482080 0
0x30020000 622593 shmman 666 7706400 0
0x30030000 688130 shmman 666 69440 0
0x30040000 720899 shmman 666 836000 0
0x30090000 851972 shmman 666 504356 0
0x30050000 557061 shmman 666 59040 0
0x30070000 589830 shmman 666 59040 0
0x30060000 655367 shmman 666 78720 0

------ Semaphore Arrays --------
key semid owner perms nsems status

------ Message Queues --------
key msqid owner perms used-bytes messages

#ipcrm
usage ipcrm [shm | msg | sem] id
처럼 삭제하는 함수도 있습니다.

키에 관한것은 난수로 발생시켜서 생성한 다음
사용하기 전에 그 key로 조회해본 다음
이미 존재하지 않으면 사용해도 되고
(이미 존재한다면 그 키로 아이디를 조회했을때
id값이 나올테고 아니면 에러를 리턴하겠죠..)

또 그냥 상수처럼 일정한 값을 정해서 사용하면
되지요.. 저같은 경우엔 필수적인 것은 후자의 방법을 사용하고,
임시적인 ipc같은 경우엔 난수발생으로 키를 얻지요..

그리고 ipc프로그래밍의 예제가..
http//www.joinc.co.kr/modules.php?name=News&file=article&sid=32
이글을 보시면 도움이 될듯하고요..

http//www.ezdoum.com/stories.php?story=02/05/19/5694616

ipc관련 함수도 그냥 system에서 제공하는 함수를
사용하시는거보다 적당히 랩핑해서 사용하는게 좋습니다.

저는 아래와 같이 랩핑함수를 만들어서 사용합니다.

char *Attachshm(shmid,shmaddr,flag)
int Detachshm(vaddr)
int Getshmid(shmkey)
int Makeshm(shmkey,nbyte)
int Removeshm(shmkey)

익명 사용자의 이미지

다른 wrapping함수들은 알겠는데..
Getshmid(shmkey)는 어떻게 구현이 되져??
하는 일은 알겠는데, 안에서 shmget()함수를 호출한다면, size가 필요한데, size는 랩핑함수의 파라미터로 전달이 안되는데.. 특별한 방법이 있는지 궁금합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.