# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2012-04-23 07:54+0900\n" "PO-Revision-Date: 2012-04-24 14:02+0900\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: build/C/man3/sem_close.3:26 #, no-wrap msgid "SEM_CLOSE" msgstr "SEM_CLOSE" #. type: TH #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_unlink.3:26 #, no-wrap msgid "2006-03-25" msgstr "2006-03-25" #. type: TH #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_init.3:26 #: build/C/man3/sem_open.3:26 build/C/man7/sem_overview.7:26 #: build/C/man3/sem_post.3:26 build/C/man3/sem_unlink.3:26 #: build/C/man3/sem_wait.3:26 build/C/man2/semctl.2:39 #: build/C/man2/semget.2:34 build/C/man2/semop.2:33 #, no-wrap msgid "Linux" msgstr "Linux" #. type: TH #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_init.3:26 #: build/C/man3/sem_open.3:26 build/C/man7/sem_overview.7:26 #: build/C/man3/sem_post.3:26 build/C/man3/sem_unlink.3:26 #: build/C/man3/sem_wait.3:26 build/C/man2/semctl.2:39 #: build/C/man2/semget.2:34 build/C/man2/semop.2:33 #, no-wrap msgid "Linux Programmer's Manual" msgstr "Linux Programmer's Manual" #. type: SH #: build/C/man3/sem_close.3:27 build/C/man3/sem_destroy.3:27 #: build/C/man3/sem_getvalue.3:27 build/C/man3/sem_init.3:27 #: build/C/man3/sem_open.3:27 build/C/man7/sem_overview.7:27 #: build/C/man3/sem_post.3:27 build/C/man3/sem_unlink.3:27 #: build/C/man3/sem_wait.3:27 build/C/man2/semctl.2:40 #: build/C/man2/semget.2:35 build/C/man2/semop.2:34 #, no-wrap msgid "NAME" msgstr "名前" #. type: Plain text #: build/C/man3/sem_close.3:29 msgid "sem_close - close a named semaphore" msgstr "sem_close - 名前付きセマフォをクローズする" #. type: SH #: build/C/man3/sem_close.3:29 build/C/man3/sem_destroy.3:29 #: build/C/man3/sem_getvalue.3:29 build/C/man3/sem_init.3:29 #: build/C/man3/sem_open.3:29 build/C/man3/sem_post.3:29 #: build/C/man3/sem_unlink.3:29 build/C/man3/sem_wait.3:29 #: build/C/man2/semctl.2:42 build/C/man2/semget.2:37 build/C/man2/semop.2:36 #, no-wrap msgid "SYNOPSIS" msgstr "書式" #. type: Plain text #: build/C/man3/sem_close.3:32 build/C/man3/sem_destroy.3:32 #: build/C/man3/sem_getvalue.3:32 build/C/man3/sem_init.3:32 #: build/C/man3/sem_post.3:32 build/C/man3/sem_unlink.3:32 #: build/C/man3/sem_wait.3:32 #, no-wrap msgid "B<#include Esemaphore.hE>\n" msgstr "B<#include Esemaphore.hE>\n" #. type: Plain text #: build/C/man3/sem_close.3:34 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_close.3:37 build/C/man3/sem_destroy.3:37 #: build/C/man3/sem_getvalue.3:37 build/C/man3/sem_init.3:37 #: build/C/man3/sem_open.3:41 build/C/man3/sem_post.3:37 #: build/C/man3/sem_unlink.3:37 build/C/man3/sem_wait.3:41 msgid "Link with I<-lrt> or I<-pthread>." msgstr "I<-lrt> または I<-pthread> でリンクする。" #. type: SH #: build/C/man3/sem_close.3:37 build/C/man3/sem_destroy.3:37 #: build/C/man3/sem_getvalue.3:37 build/C/man3/sem_init.3:37 #: build/C/man3/sem_open.3:41 build/C/man7/sem_overview.7:29 #: build/C/man3/sem_post.3:37 build/C/man3/sem_unlink.3:37 #: build/C/man3/sem_wait.3:49 build/C/man2/semctl.2:50 #: build/C/man2/semget.2:47 build/C/man2/semop.2:55 #, no-wrap msgid "DESCRIPTION" msgstr "説明" #. type: Plain text #: build/C/man3/sem_close.3:43 msgid "" "B() closes the named semaphore referred to by I, allowing " "any resources that the system has allocated to the calling process for this " "semaphore to be freed." msgstr "" "B() は I が参照する名前付きセマフォをクローズし、 このセマ" "フォ用に呼び出し元プロセスにシステムが割り当てていた リソースを解放できるよう" "にする。" #. type: SH #: build/C/man3/sem_close.3:43 build/C/man3/sem_destroy.3:55 #: build/C/man3/sem_getvalue.3:54 build/C/man3/sem_init.3:77 #: build/C/man3/sem_open.3:104 build/C/man3/sem_post.3:45 #: build/C/man3/sem_unlink.3:44 build/C/man3/sem_wait.3:108 #: build/C/man2/semctl.2:338 build/C/man2/semget.2:155 #: build/C/man2/semop.2:309 #, no-wrap msgid "RETURN VALUE" msgstr "返り値" #. type: Plain text #: build/C/man3/sem_close.3:49 msgid "" "On success B() returns 0; on error, -1 is returned, with " "I set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、-1 を返し、 I " "にエラーを示す値をセットする。" #. type: SH #: build/C/man3/sem_close.3:49 build/C/man3/sem_destroy.3:61 #: build/C/man3/sem_getvalue.3:60 build/C/man3/sem_init.3:83 #: build/C/man3/sem_open.3:116 build/C/man3/sem_post.3:52 #: build/C/man3/sem_unlink.3:50 build/C/man3/sem_wait.3:114 #: build/C/man2/semctl.2:385 build/C/man2/semget.2:161 #: build/C/man2/semop.2:319 #, no-wrap msgid "ERRORS" msgstr "エラー" #. type: TP #: build/C/man3/sem_close.3:50 build/C/man3/sem_destroy.3:62 #: build/C/man3/sem_getvalue.3:61 build/C/man3/sem_init.3:84 #: build/C/man3/sem_open.3:132 build/C/man3/sem_open.3:137 #: build/C/man3/sem_post.3:53 build/C/man3/sem_wait.3:119 #: build/C/man3/sem_wait.3:133 build/C/man2/semctl.2:418 #: build/C/man2/semget.2:186 build/C/man2/semop.2:367 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_close.3:54 build/C/man3/sem_destroy.3:66 #: build/C/man3/sem_getvalue.3:65 build/C/man3/sem_post.3:57 #: build/C/man3/sem_wait.3:123 msgid "I is not a valid semaphore." msgstr "I は有効なセマフォではない。" #. type: SH #: build/C/man3/sem_close.3:54 build/C/man3/sem_destroy.3:66 #: build/C/man3/sem_getvalue.3:65 build/C/man3/sem_init.3:95 #: build/C/man3/sem_open.3:170 build/C/man7/sem_overview.7:138 #: build/C/man3/sem_post.3:61 build/C/man3/sem_unlink.3:62 #: build/C/man3/sem_wait.3:143 build/C/man2/semctl.2:460 #: build/C/man2/semget.2:217 build/C/man2/semop.2:397 #, no-wrap msgid "CONFORMING TO" msgstr "準拠" #. type: Plain text #: build/C/man3/sem_close.3:56 build/C/man3/sem_destroy.3:68 #: build/C/man3/sem_getvalue.3:67 build/C/man3/sem_init.3:97 #: build/C/man3/sem_open.3:172 build/C/man7/sem_overview.7:140 #: build/C/man3/sem_post.3:63 build/C/man3/sem_unlink.3:64 #: build/C/man3/sem_wait.3:145 msgid "POSIX.1-2001." msgstr "POSIX.1-2001." #. type: SH #: build/C/man3/sem_close.3:56 build/C/man3/sem_destroy.3:68 #: build/C/man3/sem_getvalue.3:67 build/C/man3/sem_init.3:97 #: build/C/man7/sem_overview.7:140 build/C/man3/sem_post.3:63 #: build/C/man3/sem_wait.3:145 build/C/man2/semctl.2:463 #: build/C/man2/semget.2:221 build/C/man2/semop.2:400 #, no-wrap msgid "NOTES" msgstr "注意" #. type: Plain text #: build/C/man3/sem_close.3:60 msgid "" "All open named semaphores are automatically closed on process termination, " "or upon B(2)." msgstr "" "オープンされたすべての名前付きセマフォは、プロセス終了時、もしくは B" "(2) 実行時に自動的にクローズされる。" #. type: SH #: build/C/man3/sem_close.3:60 build/C/man3/sem_destroy.3:74 #: build/C/man3/sem_getvalue.3:71 build/C/man3/sem_init.3:102 #: build/C/man3/sem_open.3:172 build/C/man7/sem_overview.7:152 #: build/C/man3/sem_post.3:70 build/C/man3/sem_unlink.3:64 #: build/C/man3/sem_wait.3:262 build/C/man2/semctl.2:509 #: build/C/man2/semget.2:279 build/C/man2/semop.2:513 #, no-wrap msgid "SEE ALSO" msgstr "関連項目" #. type: Plain text #: build/C/man3/sem_close.3:67 msgid "" "B(3), B(3), B(3), B(3), " "B(3), B(7)" msgstr "" "B(3), B(3), B(3), B(3), " "B(3), B(7)" #. type: SH #: build/C/man3/sem_close.3:67 build/C/man3/sem_destroy.3:79 #: build/C/man3/sem_getvalue.3:75 build/C/man3/sem_init.3:107 #: build/C/man3/sem_open.3:179 build/C/man7/sem_overview.7:162 #: build/C/man3/sem_post.3:74 build/C/man3/sem_unlink.3:70 #: build/C/man3/sem_wait.3:268 build/C/man2/semctl.2:516 #: build/C/man2/semget.2:286 build/C/man2/semop.2:521 #, no-wrap msgid "COLOPHON" msgstr "この文書について" #. type: Plain text #: build/C/man3/sem_close.3:74 build/C/man3/sem_destroy.3:86 #: build/C/man3/sem_getvalue.3:82 build/C/man3/sem_init.3:114 #: build/C/man3/sem_open.3:186 build/C/man7/sem_overview.7:169 #: build/C/man3/sem_post.3:81 build/C/man3/sem_unlink.3:77 #: build/C/man3/sem_wait.3:275 build/C/man2/semctl.2:523 #: build/C/man2/semget.2:293 build/C/man2/semop.2:528 msgid "" "This page is part of release 3.38 of the Linux I project. A " "description of the project, and information about reporting bugs, can be " "found at http://www.kernel.org/doc/man-pages/." msgstr "" "この man ページは Linux I プロジェクトのリリース 3.38 の一部である。\n" "プロジェクトの説明とバグ報告に関する情報は\n" "http://www.kernel.org/doc/man-pages/ に書かれている。" #. type: TH #: build/C/man3/sem_destroy.3:26 #, no-wrap msgid "SEM_DESTROY" msgstr "SEM_DESTROY" #. type: Plain text #: build/C/man3/sem_destroy.3:29 msgid "sem_destroy - destroy an unnamed semaphore" msgstr "sem_destroy - 名前なしセマフォを破棄する" #. type: Plain text #: build/C/man3/sem_destroy.3:34 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_destroy.3:41 msgid "" "B() destroys the unnamed semaphore at the address pointed to " "by I." msgstr "" "B() は I が指すアドレスにある名前なしセマフォを破棄する。" #. type: Plain text #: build/C/man3/sem_destroy.3:46 msgid "" "Only a semaphore that has been initialized by B(3) should be " "destroyed using B()." msgstr "" "B() を使って破棄するのは、 B(3) で初期化したセマフォ" "だけにすべきである。" #. type: Plain text #: build/C/man3/sem_destroy.3:51 msgid "" "Destroying a semaphore that other processes or threads are currently blocked " "on (in B(3)) produces undefined behavior." msgstr "" "他のプロセスやスレッドが (B(3) で) 待ち状態になっているセマフォを" "破棄した場合の挙動は定義されていない。" #. type: Plain text #: build/C/man3/sem_destroy.3:55 msgid "" "Using a semaphore that has been destroyed produces undefined results, until " "the semaphore has been reinitialized using B(3)." msgstr "" "すでに破棄されたセマフォを、 B(3) を使って再初期化される前に使用し" "た場合、その結果は未定義である。" #. type: Plain text #: build/C/man3/sem_destroy.3:61 msgid "" "B() returns 0 on success; on error, -1 is returned, and " "I is set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、-1 を返し、 " "I にエラーを示す値をセットする。" #. But not on NPTL, where sem_destroy () is a no-op.. #. type: Plain text #: build/C/man3/sem_destroy.3:74 msgid "" "An unnamed semaphore should be destroyed with B() before the " "memory in which it is located is deallocated. Failure to do this can result " "in resource leaks on some implementations." msgstr "" "名前なしセマフォは、そのセマフォが置かれているメモリが解放される前に、 " "B() を使って破棄しておくべきである。これを行わなかった場合、実" "装によっては リソースのリークが起こりえる。" #. type: Plain text #: build/C/man3/sem_destroy.3:79 msgid "B(3), B(3), B(3), B(7)" msgstr "B(3), B(3), B(3), B(7)" #. type: TH #: build/C/man3/sem_getvalue.3:26 #, no-wrap msgid "SEM_GETVALUE" msgstr "SEM_GETVALUE" #. type: Plain text #: build/C/man3/sem_getvalue.3:29 msgid "sem_getvalue - get the value of a semaphore" msgstr "sem_getvalue - セマフォの値を取得する" #. type: Plain text #: build/C/man3/sem_getvalue.3:34 #, no-wrap msgid "BIB<, int *>IB<);>\n" msgstr "BIB<, int *>IB<);>\n" #. type: Plain text #: build/C/man3/sem_getvalue.3:43 msgid "" "B() places the current value of the semaphore pointed to " "I into the integer pointed to by I." msgstr "" "B() は、 I が指すセマフォの現在の値を I で指す整数" "に格納する。" #. type: Plain text #: build/C/man3/sem_getvalue.3:54 msgid "" "If one or more processes or threads are blocked waiting to lock the " "semaphore with B(3), POSIX.1-2001 permits two possibilities for " "the value returned in I: either 0 is returned; or a negative number " "whose absolute value is the count of the number of processes and threads " "currently blocked in B(3). Linux adopts the former behavior." msgstr "" "POSIX.1-2001 によると、 1つ以上のプロセスかスレッドが B(3) でセマ" "フォのロック待ちで停止している場合、 I で返される値は 0 もしくは負の値" "のいずれかとなる。 負の値の場合、その絶対値は B(3) で現在停止して" "いるプロセスかスレッドの合計数に等しい。 Linux は前者の動作 (0 を返す動作) を" "採用している。" #. type: Plain text #: build/C/man3/sem_getvalue.3:60 msgid "" "B() returns 0 on success; on error, -1 is returned and " "I is set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、-1 を返し、 " "I にエラーを示す値をセットする。" #. type: Plain text #: build/C/man3/sem_getvalue.3:71 msgid "" "The value of the semaphore may already have changed by the time " "B() returns." msgstr "" "B() が返るときには、すでにセマフォの値は変化している可能性があ" "る。" #. type: Plain text #: build/C/man3/sem_getvalue.3:75 msgid "B(3), B(3), B(7)" msgstr "B(3), B(3), B(7)" #. type: TH #: build/C/man3/sem_init.3:26 #, no-wrap msgid "SEM_INIT" msgstr "SEM_INIT" #. type: TH #: build/C/man3/sem_init.3:26 #, no-wrap msgid "2008-07-27" msgstr "2008-07-27" #. type: Plain text #: build/C/man3/sem_init.3:29 msgid "sem_init - initialize an unnamed semaphore" msgstr "sem_init - 名前なしセマフォを初期化する" #. type: Plain text #: build/C/man3/sem_init.3:34 #, no-wrap msgid "BIB<, int >IB<, unsigned int >IB<);>\n" msgstr "BIB<, int >IB<, unsigned int >IB<);>\n" #. type: Plain text #: build/C/man3/sem_init.3:44 msgid "" "B() initializes the unnamed semaphore at the address pointed to " "by I. The I argument specifies the initial value for the " "semaphore." msgstr "" "B() は、 I が指すアドレスにある名前なしセマフォを初期化す" "る。 I 引き数はそのセマフォの初期値を指定する。" #. type: Plain text #: build/C/man3/sem_init.3:49 msgid "" "The I argument indicates whether this semaphore is to be shared " "between the threads of a process, or between processes." msgstr "" "I 引き数は、このセマフォがプロセス内のスレッド間で共有されるのか、 " "プロセス間で共有されるのか、を示す。" #. type: Plain text #: build/C/man3/sem_init.3:57 msgid "" "If I has the value 0, then the semaphore is shared between the " "threads of a process, and should be located at some address that is visible " "to all threads (e.g., a global variable, or a variable allocated dynamically " "on the heap)." msgstr "" "I が 0 の場合、セマフォはプロセス内のスレッド間で共有される。 セマ" "フォはすべてのスレッドから参照可能なアドレスに配置すべきである (例えば、大域" "変数や、ヒープ上に動的に割り当てられた変数など)。" #. type: Plain text #: build/C/man3/sem_init.3:74 msgid "" "If I is nonzero, then the semaphore is shared between processes, " "and should be located in a region of shared memory (see B(3), " "B(2), and B(2)). (Since a child created by B(2) " "inherits its parent's memory mappings, it can also access the semaphore.) " "Any process that can access the shared memory region can operate on the " "semaphore using B(3), B(3), etc." msgstr "" "I が 0 以外の場合、セマフォはプロセス間で共有される。セマフォは 共有" "メモリ領域に配置すべきである (B(3), B(2), B(2) 参" "照)。 (B(2) で生成された子プロセスは親プロセスのメモリマッピングを継承" "するため、 子プロセスもセマフォにアクセスできる。) 共有メモリ領域にアクセス" "できるプロセスならば、どのプロセスでも B(3) や B(3) な" "どを使ってセマフォを操作できる。" #. type: Plain text #: build/C/man3/sem_init.3:77 msgid "" "Initializing a semaphore that has already been initialized results in " "undefined behavior." msgstr "すでに初期化済のセマフォを初期化した場合の挙動は定義されていない。" #. type: Plain text #: build/C/man3/sem_init.3:83 msgid "" "B() returns 0 on success; on error, -1 is returned, and I " "is set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、-1 を返し、 I " "にエラーを示す値をセットする。" #. type: Plain text #: build/C/man3/sem_init.3:89 msgid "I exceeds B." msgstr "I が B を超えている。" #. type: TP #: build/C/man3/sem_init.3:89 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_init.3:95 msgid "" "I is nonzero, but the system does not support process-shared " "semaphores (see B(7))." msgstr "" "I が 0 以外だが、システムがプロセス共有セマフォをサポートしていない " "(B(7) 参照)。" #. type: Plain text #: build/C/man3/sem_init.3:102 msgid "" "Bizarrely, POSIX.1-2001 does not specify the value that should be returned " "by a successful call to B(). POSIX.1-2008 rectifies this, " "specifying the zero return on success." msgstr "" "妙なことに、POSIX.1-2001 は B() が成功した場合に返すべき値を規定し" "ていない。 POSIX.1-2008 ではこれが修正され、成功時には 0 を返すことが規定され" "た。" #. type: Plain text #: build/C/man3/sem_init.3:107 msgid "B(3), B(3), B(3), B(7)" msgstr "B(3), B(3), B(3), B(7)" #. type: TH #: build/C/man3/sem_open.3:26 #, no-wrap msgid "SEM_OPEN" msgstr "SEM_OPEN" #. type: TH #: build/C/man3/sem_open.3:26 #, no-wrap msgid "2009-02-20" msgstr "2009-02-20" #. type: Plain text #: build/C/man3/sem_open.3:29 msgid "sem_open - initialize and open a named semaphore" msgstr "sem_open - 名前付きセマフォを初期化し、オープンする" #. type: Plain text #: build/C/man3/sem_open.3:34 #, no-wrap msgid "" "B<#include Efcntl.hE> /* For O_* constants */\n" "B<#include Esys/stat.hE> /* For mode constants */\n" "B<#include Esemaphore.hE>\n" msgstr "" "B<#include Efcntl.hE> /* For O_* constants */\n" "B<#include Esys/stat.hE> /* For mode constants */\n" "B<#include Esemaphore.hE>\n" #. type: Plain text #: build/C/man3/sem_open.3:38 #, no-wrap msgid "" "BIB<, int >IB<);>\n" "BIB<, int >IB<, >\n" "B< mode_t >IB<, unsigned int >IB<);>\n" msgstr "" "BIB<, int >IB<);>\n" "BIB<, int >IB<, >\n" "B< mode_t >IB<, unsigned int >IB<);>\n" #. type: Plain text #: build/C/man3/sem_open.3:50 msgid "" "B() creates a new POSIX semaphore or opens an existing " "semaphore. The semaphore is identified by I. For details of the " "construction of I, see B(7)." msgstr "" "B() は、新規の POSIX セマフォを作成するか、既存のセマフォのオープ" "ンを行う。 セマフォは I で識別される。 I の構成の詳細は " "B(7) を参照。" #. In reality the file system IDs are used on Linux. #. type: Plain text #: build/C/man3/sem_open.3:76 msgid "" "The I argument specifies flags that control the operation of the " "call. (Definitions of the flags values can be obtained by including " "Ifcntl.hE>.) If B is specified in I, then the " "semaphore is created if it does not already exist. The owner (user ID) of " "the semaphore is set to the effective user ID of the calling process. The " "group ownership (group ID) is set to the effective group ID of the calling " "process. If both B and B are specified in I, then " "an error is returned if a semaphore with the given I already exists." msgstr "" "I 引き数には、 B() の動作を制御するフラグを指定する (oflag " "の値の定義は Ifcntl.hE> のインクルードにより得られる)。 I " "に B が指定されると、まだ存在しない場合にはそのセマフォが作成され" "る。 セマフォの所有者 (ユーザ ID)、グループ所有権 (グループ ID) には、 それぞ" "れ呼び出し元プロセスの実効 UID、実効 GID が設定される。 I に " "B と B の両方が指定された場合、指定された名前 I のセマ" "フォがすでに存在するとエラーが返される。" #. type: Plain text #: build/C/man3/sem_open.3:104 msgid "" "If B is specified in I, then two additional arguments must " "be supplied. The I argument specifies the permissions to be placed on " "the new semaphore, as for B(2). (Symbolic definitions for the " "permissions bits can be obtained by including Isys/stat.hE>.) The " "permissions settings are masked against the process umask. Both read and " "write permission should be granted to each class of user that will access " "the semaphore. The I argument specifies the initial value for the " "new semaphore. If B is specified, and a semaphore with the given " "I already exists, then I and I are ignored." msgstr "" "I に B を指定する場合、さらに引き数が 2 つ必要である。 " "I 引き数は、 B(2) と同じように、新しいセマフォに設定されるアクセ" "ス許可 (permission) を 指定する。許可設定はプロセスの umask でマスクされる " "(許可ビットのシンボル定義は Isys/stat.hE> のインクルードにより得ら" "れる)。 セマフォにアクセスしようとするユーザは、読み出し許可と書き込み許可の " "両方を得る必要がある。 I 引き数は新しいセマフォの初期値を指定する。 " "B が指定され、指定した名前 I のセマフォがすでに存在する場合、 " "I と I は無視される。" #. type: Plain text #: build/C/man3/sem_open.3:116 msgid "" "On success, B() returns the address of the new semaphore; this " "address is used when calling other semaphore-related functions. On error, " "B() returns B, with I set to indicate the " "error." msgstr "" "成功すると、 B() は新しいセマフォのアドレスを返す。 このアドレスは" "他のセマフォ関連の関数を呼び出す際に使用される。 エラーの場合、 B" "() は B を返し、 I にエラーを示す値をセットする。" #. type: TP #: build/C/man3/sem_open.3:117 build/C/man3/sem_unlink.3:51 #: build/C/man2/semctl.2:389 build/C/man2/semget.2:165 #: build/C/man2/semop.2:331 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:121 msgid "" "The semaphore exists, but the caller does not have permission to open it." msgstr "" "そのセマフォが存在するが、呼び出し元にはそのセマフォをオープンする 許可がな" "い。" #. type: TP #: build/C/man3/sem_open.3:121 build/C/man2/semget.2:173 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:132 msgid "" "Both B and B were specified in I, but a semaphore " "with this I already exists." msgstr "" "I に B と B の両方が指定されたが、 I という名前" "のセマフォはすでに存在する。" #. type: Plain text #: build/C/man3/sem_open.3:137 msgid "I was greater than B." msgstr "I が B よりも大きい。" #. type: Plain text #: build/C/man3/sem_open.3:141 msgid "I consists of just \"/\", followed by no other characters." msgstr "" "I が \"/\" だけで構成され、その後ろに他の文字が続いていなかった。" #. type: TP #: build/C/man3/sem_open.3:141 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:144 msgid "The process already has the maximum number of files and open." msgstr "オープンされたファイル数がすでにそのプロセスにおける上限に達している。" #. type: TP #: build/C/man3/sem_open.3:144 build/C/man3/sem_unlink.3:54 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:148 build/C/man3/sem_unlink.3:58 msgid "I was too long." msgstr "I が長すぎる。" #. type: TP #: build/C/man3/sem_open.3:148 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:151 msgid "The system limit on the total number of open files has been reached." msgstr "オープンされたファイル総数がシステム全体での上限に達している。" #. type: TP #: build/C/man3/sem_open.3:151 build/C/man3/sem_unlink.3:58 #: build/C/man2/semget.2:197 #, no-wrap msgid "B" msgstr "B" #. this error can occur if we have a name of the (nonportable) form #. /dir/name, and the directory /dev/shm/dir does not exist. #. type: Plain text #: build/C/man3/sem_open.3:167 msgid "" "The B flag was not specified in I and no semaphore with this " "I exists; or, B was specified, but I wasn't well formed." msgstr "" "I に B フラグが指定されておらず、 I という名前のセマ" "フォも存在しない。 または、 B が指定されたが、 I が適切な形式" "ではなかった。" #. type: TP #: build/C/man3/sem_open.3:167 build/C/man2/semget.2:205 #: build/C/man2/semop.2:374 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_open.3:170 msgid "Insufficient memory." msgstr "十分なメモリがない。" #. type: Plain text #: build/C/man3/sem_open.3:179 msgid "" "B(3), B(3), B(3), B(3), " "B(3), B(7)" msgstr "" "B(3), B(3), B(3), B(3), " "B(3), B(7)" #. type: TH #: build/C/man7/sem_overview.7:26 #, no-wrap msgid "SEM_OVERVIEW" msgstr "SEM_OVERVIEW" #. type: TH #: build/C/man7/sem_overview.7:26 #, no-wrap msgid "2010-05-22" msgstr "2010-05-22" #. type: Plain text #: build/C/man7/sem_overview.7:29 msgid "sem_overview - Overview of POSIX semaphores" msgstr "sem_overview - POSIX セマフォの概要" #. type: Plain text #: build/C/man7/sem_overview.7:31 msgid "" "POSIX semaphores allow processes and threads to synchronize their actions." msgstr "" "POSIX セマフォを使用すると、プロセスやスレッド間でその動作を 同期させることが" "できる。" #. type: Plain text #: build/C/man7/sem_overview.7:41 msgid "" "A semaphore is an integer whose value is never allowed to fall below zero. " "Two operations can be performed on semaphores: increment the semaphore value " "by one (B(3)); and decrement the semaphore value by one " "(B(3)). If the value of a semaphore is currently zero, then a " "B(3) operation will block until the value becomes greater than " "zero." msgstr "" "セマフォは整数であり、その値は決して 0 未満になることは許されない。 セマフォ" "に対してできる操作は 2 つである: セマフォ値を 1 増やす (B(3)); セマ" "フォ値を 1 減らす (B(3))。 セマフォの値がすでに 0 の場合、セマフォ" "値が 0 より大きくなるまで B(3) 操作は停止 (block) する。" #. type: Plain text #: build/C/man7/sem_overview.7:44 msgid "" "POSIX semaphores come in two forms: named semaphores and unnamed semaphores." msgstr "" "POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前なしセマフォ " "(unnamed semaphore) の 2つの形がある。" #. type: TP #: build/C/man7/sem_overview.7:44 #, no-wrap msgid "B" msgstr "B<名前付きセマフォ>" #. glibc allows the initial slash to be omitted, and makes #. multiple initial slashes equivalent to a single slash. #. This differs from the implementation of POSIX message queues. #. glibc allows subdirectory components in the name, in which #. case the subdirectory tree must exist under /dev/shm, and #. the fist subdirectory component must exist as the name #. sem.name, and all of the subdirectory components must allow the #. required permissions if a user wants to create a semaphore #. object in a subdirectory. #. type: Plain text #: build/C/man7/sem_overview.7:64 msgid "" "A named semaphore is identified by a name of the form I; that is, " "a null-terminated string of up to BI<-4> (i.e., 251) characters " "consisting of an initial slash, followed by one or more characters, none of " "which are slashes. Two processes can operate on the same named semaphore by " "passing the same name to B(3)." msgstr "" "名前付きセマフォは I という形式の名前で識別される。 その名前は、最" "大で BI<-4> (すなわち 251) 文字の NULL 終端された文字列で、 スラッ" "シュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。 B" "(3) に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ に対し" "操作を行うことができる。" #. type: Plain text #: build/C/man7/sem_overview.7:79 msgid "" "The B(3) function creates a new named semaphore or opens an " "existing named semaphore. After the semaphore has been opened, it can be " "operated on using B(3) and B(3). When a process has " "finished using the semaphore, it can use B(3) to close the " "semaphore. When all processes have finished using the semaphore, it can be " "removed from the system using B(3)." msgstr "" "B(3) 関数は、新しい名前付きセマフォを作成するか、既に存在する名前" "付き セマフォをオープンする。 セマフォをオープンした後は、 B(3) " "と B(3) を使ってセマフォを操作できる。 プロセスがセマフォの使用を" "終えた際は、 B(3) を使ってセマフォをクローズできる。 あるセマフォ" "をどのプロセスも使用しなくなると、 B(3) を使ってそのセマフォをシ" "ステムから削除することができる。" #. type: TP #: build/C/man7/sem_overview.7:79 #, no-wrap msgid "B" msgstr "B<名前なしセマフォ (メモリベース・セマフォ)>" #. type: Plain text #: build/C/man7/sem_overview.7:94 msgid "" "An unnamed semaphore does not have a name. Instead the semaphore is placed " "in a region of memory that is shared between multiple threads (a I) or processes (a I). A thread-" "shared semaphore is placed in an area of memory shared between the threads " "of a process, for example, a global variable. A process-shared semaphore " "must be placed in a shared memory region (e.g., a System V shared memory " "segment created using B(2), or a POSIX shared memory object built " "created using B(3))." msgstr "" "名前なしセマフォは名前を持たない。その代わり、セマフォは、 複数スレッド間で共" "有されるメモリ領域、もしくは複数プロセス間で 共有されたメモリ領域に置かれる " "(前者を I<スレッド共有セマフォ (thread-shared semaphore)>、 後者を I<プロセス" "共有セマフォ (process-shared semaphore)> と呼ぶ)。スレッド共有セマフォは、同" "じプロセス内のスレッド間で共有される メモリ領域、例えば大域変数 (global " "variable) に配置される。 プロセス共有セマフォは、共有メモリ領域 (例えば、 " "B(2) を使って作成できる System V 共有メモリ・セグメントや " "B(3) を使って作成できる POSIX 共有メモリ・オブジェクト) 内に配置" "しなければならない。" #. type: Plain text #: build/C/man7/sem_overview.7:105 msgid "" "Before being used, an unnamed semaphore must be initialized using B" "(3). It can then be operated on using B(3) and B(3). " "When the semaphore is no longer required, and before the memory in which it " "is located is deallocated, the semaphore should be destroyed using " "B(3)." msgstr "" "名前なしセマフォは、使用する前に B(3) を使って初期化しなければなら" "ない。 セマフォは B(3) と B(3) を使って操作できる。 セ" "マフォがもはや必要なくなったときや、 セマフォが置かれているメモリを解放する前" "には、 B(3) を使ってセマフォを破棄すべきである。" #. type: Plain text #: build/C/man7/sem_overview.7:108 msgid "" "The remainder of this section describes some specific details of the Linux " "implementation of POSIX semaphores." msgstr "" "この節の残りでは、POSIX セマフォの Linux の実装の詳細 について説明する。" #. type: SS #: build/C/man7/sem_overview.7:108 #, no-wrap msgid "Versions" msgstr "Versions" #. type: Plain text #: build/C/man7/sem_overview.7:114 msgid "" "Prior to kernel 2.6, Linux only supported unnamed, thread-shared " "semaphores. On a system with Linux 2.6 and a glibc that provides the NPTL " "threading implementation, a complete implementation of POSIX semaphores is " "provided." msgstr "" "バージョン 2.6 より前のカーネルでは、Linux は 名前なしのスレッド共有セマフォ" "のみをサポートしていた。 Linux 2.6 と NPTL スレッド実装を提供している glibc " "が入った システムでは、POSIX セマフォの完全な実装が提供される。" #. type: SS #: build/C/man7/sem_overview.7:114 #, no-wrap msgid "Persistence" msgstr "持続性" #. type: Plain text #: build/C/man7/sem_overview.7:119 msgid "" "POSIX named semaphores have kernel persistence: if not removed by " "B(3), a semaphore will exist until the system is shut down." msgstr "" "POSIX 名前付きセマフォはカーネル内で保持される。 B(3) で削除され" "なければ、セマフォは システムがシャットダウンされるまで存在し続ける。" #. type: SS #: build/C/man7/sem_overview.7:119 #, no-wrap msgid "Linking" msgstr "リンク" #. type: Plain text #: build/C/man7/sem_overview.7:124 msgid "" "Programs using the POSIX semaphores API must be compiled with I to " "link against the real-time library, I." msgstr "" "POSIX セマフォ API を使用したプログラムは I でコンパイルし、リアルタ" "イムライブラリ I とリンクしなければならない。" #. type: SS #: build/C/man7/sem_overview.7:124 #, no-wrap msgid "Accessing named semaphores via the file system" msgstr "ファイルシステム経由での名前付きセマフォへのアクセス" #. type: Plain text #: build/C/man7/sem_overview.7:135 msgid "" "On Linux, named semaphores are created in a virtual file system, normally " "mounted under I, with names of the form BI. (This " "is the reason that semaphore names are limited to BI<-4> rather " "than B characters.)" msgstr "" "Linux では、名前付きセマフォは仮想ファイルシステム (virtual file system) 内" "に BI という形の名前で作成される。仮想ファイルシステムは通常 " "I 以下にマウントされる。 (これが、セマフォの名前の文字数の上限が " "B ではなく BI<-4> となっている理由である。)" #. type: Plain text #: build/C/man7/sem_overview.7:138 msgid "" "Since Linux 2.6.19, ACLs can be placed on files under this directory, to " "control object permissions on a per-user and per-group basis." msgstr "" "Linux 2.6.19 以降では、このディレクトリ配下のファイルに対して ACL を 設定で" "き、オブジェクトへの許可をユーザ単位、グループ単位で制御することが できる。" #. type: Plain text #: build/C/man7/sem_overview.7:149 msgid "" "System V semaphores (B(2), B(2), etc.) are an older semaphore " "API. POSIX semaphores provide a simpler, and better designed interface than " "System V semaphores; on the other hand POSIX semaphores are less widely " "available (especially on older systems) than System V semaphores." msgstr "" "System V セマフォ (B(2), B(2) など) は古いセマフォ API であ" "る。 POSIX セマフォは System V よりも 簡単で、うまく設計されたインタフェース" "を提供している。 一方で、POSIX セマフォは System V セマフォと比べると 利用で" "きるシステムが少ない (特に、古いシステムでは少ない)。" #. type: SH #: build/C/man7/sem_overview.7:149 build/C/man3/sem_post.3:67 #: build/C/man3/sem_wait.3:153 build/C/man2/semop.2:488 #, no-wrap msgid "EXAMPLE" msgstr "例" #. type: Plain text #: build/C/man7/sem_overview.7:152 msgid "" "An example of the use of various POSIX semaphore functions is shown in " "B(3)." msgstr "" "各種の POSIX セマフォ関数を使用した例が B(3) に記載されている。" #. type: Plain text #: build/C/man7/sem_overview.7:162 msgid "" "B(3), B(3), B(3), B(3), " "B(3), B(3), B(3), B(3), B" "(7)" msgstr "" "B(3), B(3), B(3), B(3), " "B(3), B(3), B(3), B(3), B" "(7)" #. type: TH #: build/C/man3/sem_post.3:26 #, no-wrap msgid "SEM_POST" msgstr "SEM_POST" #. type: TH #: build/C/man3/sem_post.3:26 #, no-wrap msgid "2009-03-30" msgstr "2009-03-30" #. type: Plain text #: build/C/man3/sem_post.3:29 msgid "sem_post - unlock a semaphore" msgstr "sem_post - セマフォのロックを解除する" #. type: Plain text #: build/C/man3/sem_post.3:34 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_post.3:45 msgid "" "B() increments (unlocks) the semaphore pointed to by I. If " "the semaphore's value consequently becomes greater than zero, then another " "process or thread blocked in a B(3) call will be woken up and " "proceed to lock the semaphore." msgstr "" "B() は、 I が指すセマフォの値を 1 増やす (ロックを解除する)。" "その結果、 セマフォの値は 0 より大きな値に変化し、 B(3) で停止して" "いる別のプロセスやスレッドが呼び起こされ、 セマフォをロックできるようになる。" #. type: Plain text #: build/C/man3/sem_post.3:52 msgid "" "B() returns 0 on success; on error, the value of the semaphore is " "left unchanged, -1 is returned, and I is set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、セマフォの値は変更せず" "に、 -1 を返し、 I にエラーを示す値をセットする。" #. type: TP #: build/C/man3/sem_post.3:57 #, no-wrap msgid "B" msgstr "B" #. Added in POSIX.1-2008 TC1 (Austin Interpretation 213) #. type: Plain text #: build/C/man3/sem_post.3:61 msgid "The maximum allowable value for a semaphore would be exceeded." msgstr "一つのセマフォで使用できる最大値を超えてしまうところであった。" #. type: Plain text #: build/C/man3/sem_post.3:67 msgid "" "B() is async-signal-safe: it may be safely called within a signal " "handler." msgstr "" "B() は async-signal-safe である。 つまり、シグナルハンドラの中でも" "安全に呼び出すことができる。" #. type: Plain text #: build/C/man3/sem_post.3:70 msgid "See B(3)." msgstr "B(3) 参照。" #. type: Plain text #: build/C/man3/sem_post.3:74 msgid "B(3), B(3), B(7)" msgstr "B(3), B(3), B(7)" #. type: TH #: build/C/man3/sem_unlink.3:26 #, no-wrap msgid "SEM_UNLINK" msgstr "SEM_UNLINK" #. type: Plain text #: build/C/man3/sem_unlink.3:29 msgid "sem_unlink - remove a named semaphore" msgstr "sem_unlink - 名前付きセマフォを削除する" #. type: Plain text #: build/C/man3/sem_unlink.3:34 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_unlink.3:44 msgid "" "B() removes the named semaphore referred to by I. The " "semaphore name is removed immediately. The semaphore is destroyed once all " "other processes that have the semaphore open close it." msgstr "" "B() は、 I で参照される名前付きセマフォを削除する。 セマ" "フォの名前は直ちに削除される。 このセマフォをオープンしている他のすべてのプロ" "セスがセマフォを 閉じて初めてセマフォの削除が行われる。" #. type: Plain text #: build/C/man3/sem_unlink.3:50 msgid "" "On success B() returns 0; on error, -1 is returned, with " "I set to indicate the error." msgstr "" "成功すると、 B() は 0 を返す。エラーの場合、-1 を返し、 " "I にエラーを示す値をセットする。" #. type: Plain text #: build/C/man3/sem_unlink.3:54 msgid "The caller does not have permission to unlink this semaphore." msgstr "呼び出し元にはこのセマフォを削除する許可がない。" #. type: Plain text #: build/C/man3/sem_unlink.3:62 msgid "There is no semaphore with the given I." msgstr "指定された名前 I のセマフォが存在しない。" #. type: Plain text #: build/C/man3/sem_unlink.3:70 msgid "" "B(3), B(3), B(3), B(3), " "B(7)" msgstr "" "B(3), B(3), B(3), B(3), " "B(7)" #. type: TH #: build/C/man3/sem_wait.3:26 #, no-wrap msgid "SEM_WAIT" msgstr "SEM_WAIT" #. type: TH #: build/C/man3/sem_wait.3:26 #, no-wrap msgid "2012-02-12" msgstr "2012-02-12" #. type: Plain text #: build/C/man3/sem_wait.3:29 msgid "sem_wait, sem_timedwait, sem_trywait - lock a semaphore" msgstr "sem_wait, sem_timedwait, sem_trywait - セマフォをロックする" #. type: Plain text #: build/C/man3/sem_wait.3:34 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_wait.3:36 #, no-wrap msgid "BIB<);>\n" msgstr "BIB<);>\n" #. type: Plain text #: build/C/man3/sem_wait.3:38 #, no-wrap msgid "BIB<, const struct timespec *>IB<);>\n" msgstr "BIB<, const struct timespec *>IB<);>\n" #. type: Plain text #: build/C/man3/sem_wait.3:45 build/C/man2/semop.2:51 msgid "" "Feature Test Macro Requirements for glibc (see B(7)):" msgstr "glibc 向けの機能検査マクロの要件 (B(7) 参照):" #. type: Plain text #: build/C/man3/sem_wait.3:49 msgid "" "B(): _POSIX_C_SOURCE\\ E=\\ 200112L || _XOPEN_SOURCE\\ " "E=\\ 600" msgstr "" "B(): _POSIX_C_SOURCE\\ E=\\ 200112L || _XOPEN_SOURCE\\ " "E=\\ 600" #. type: Plain text #: build/C/man3/sem_wait.3:59 msgid "" "B() decrements (locks) the semaphore pointed to by I. If " "the semaphore's value is greater than zero, then the decrement proceeds, and " "the function returns, immediately. If the semaphore currently has the value " "zero, then the call blocks until either it becomes possible to perform the " "decrement (i.e., the semaphore value rises above zero), or a signal handler " "interrupts the call." msgstr "" "B() は I が指すセマフォの値を 1 減らす (ロックする)。 セマ" "フォの値が 0 より大きい場合、減算が実行され、関数は直ちに復帰する。 セマフォ" "の現在値が 0 の場合には、減算を実行できるようになる (つまり、セマフォの値が " "0 より大きな値になる) まで、もしくは シグナルハンドラによって呼び出しが中断さ" "れるまで、 関数呼び出しは停止 (block) する。" #. type: Plain text #: build/C/man3/sem_wait.3:69 msgid "" "B() is the same as B(), except that if the decrement " "cannot be immediately performed, then call returns an error (I set to " "B) instead of blocking." msgstr "" "B() は B() と同じだが、セマフォ値の減算をすぐに実行" "できなかった場合に、 停止 (block) するのではなくエラーで復帰する (I " "に B がセットされる) 点が異なる。" #. type: Plain text #: build/C/man3/sem_wait.3:82 msgid "" "B() is the same as B(), except that I " "specifies a limit on the amount of time that the call should block if the " "decrement cannot be immediately performed. The I argument " "points to a structure that specifies an absolute timeout in seconds and " "nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). This " "structure is defined as follows:" msgstr "" "B() は B() と同じだが、セマフォ値の減算をすぐに実" "行できなかった場合に 関数呼び出しが停止する時間の上限を I で指定" "する点が異なる。 I 引き数は、タイムアウト時刻を指定する構造体へ" "のポインタである。 この構造体には、タイムアウト時刻を時刻紀元 (Epoch; " "1970-01-01 00:00:00 +0000 (UTC)) からの 経過時間 (秒+ナノ秒) で指定する。 構" "造体は以下のように定義されている:" #. type: Plain text #: build/C/man3/sem_wait.3:89 #, no-wrap msgid "" "struct timespec {\n" " time_t tv_sec; /* Seconds */\n" " long tv_nsec; /* Nanoseconds [0 .. 999999999] */\n" "};\n" msgstr "" "struct timespec {\n" " time_t tv_sec; /* Seconds */\n" " long tv_nsec; /* Nanoseconds [0 .. 999999999] */\n" "};\n" #. type: Plain text #: build/C/man3/sem_wait.3:100 msgid "" "If the timeout has already expired by the time of the call, and the " "semaphore could not be locked immediately, then B() fails " "with a timeout error (I set to B)." msgstr "" "関数呼び出し時点ですでにタイムアウトに指定した時刻が過ぎており、 かつセマフォ" "をすぐにロックできなかった場合は、 B() はタイムアウトエラー " "(I に B がセットされる) で失敗する。" #. type: Plain text #: build/C/man3/sem_wait.3:108 msgid "" "If the operation can be performed immediately, then B() " "never fails with a timeout error, regardless of the value of " "I. Furthermore, the validity of I is not checked " "in this case." msgstr "" "セマフォ操作がすぐに実行できるときは、 I がどんな値であっても " "B() が失敗することは決してない。さらにいうと、この場合には " "I の正当性の検査は行われない。" #. type: Plain text #: build/C/man3/sem_wait.3:114 msgid "" "All of these functions return 0 on success; on error, the value of the " "semaphore is left unchanged, -1 is returned, and I is set to indicate " "the error." msgstr "" "成功すると、これらの関数は 0 を返す。 エラーの場合、セマフォの値を変更せず" "に、-1 を返し、 I にエラーを示す値をセットする。" #. type: TP #: build/C/man3/sem_wait.3:115 build/C/man2/semop.2:363 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_wait.3:119 msgid "The call was interrupted by a signal handler; see B(7)." msgstr "呼び出しはシグナルハンドラにより中断された。 B(7) 参照。" #. type: Plain text #: build/C/man3/sem_wait.3:126 msgid "The following additional error can occur for B():" msgstr "B() の場合には、上記に加えて以下のエラーも起こる。" #. type: TP #: build/C/man3/sem_wait.3:126 build/C/man2/semop.2:338 #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: build/C/man3/sem_wait.3:130 msgid "" "The operation could not be performed without blocking (i.e., the semaphore " "currently has the value zero)." msgstr "" "停止 (block) せずにロック操作を完了できなかった (つまり、 セマフォの現在の値" "が 0 であった)。" #. type: Plain text #: build/C/man3/sem_wait.3:133 msgid "The following additional errors can occur for B():" msgstr "B() の場合、以下のエラーも起こる。" #. type: Plain text #: build/C/man3/sem_wait.3:138 msgid "" "The value of I is less than 0, or greater than or " "equal to 1000 million." msgstr "" "I の値が 0 未満、もしくは 1,000,000,000 以上である。" #. type: TP #: build/C/man3/sem_wait.3:138 #, no-wrap msgid "B" msgstr "B" #. POSIX.1-2001 also allows EDEADLK -- "A deadlock condition #. was detected", but this does not occur on Linux(?). #. type: Plain text #: build/C/man3/sem_wait.3:143 msgid "The call timed out before the semaphore could be locked." msgstr "セマフォのロックに成功する前に時間切れとなった。" #. sem_wait() is always interrupted on most other implementations, #. but on FreeBSD 5.4 SA_RESTART does cause restarting. #. type: Plain text #: build/C/man3/sem_wait.3:153 msgid "" "A signal handler always interrupts a blocked call to one of these functions, " "regardless of the use of the B(2) B flag." msgstr "" "シグナルハンドラは、 B(2) の B フラグを使用しているか" "どうかに関わらず、これらの関数の呼び出しが 停止している場合、シグナルハンドラ" "により常に中断される。" #. type: Plain text #: build/C/man3/sem_wait.3:172 msgid "" "The (somewhat trivial) program shown below operates on an unnamed " "semaphore. The program expects two command-line arguments. The first " "argument specifies a seconds value that is used to set an alarm timer to " "generate a B signal. This handler performs a B(3) to " "increment the semaphore that is being waited on in I using " "B(). The second command-line argument specifies the length " "of the timeout, in seconds, for B(). The following shows " "what happens on two different runs of the program:" msgstr "" "以下に示す (ちょっとした) プログラムは名前なしセマフォの操作を行う。 プログラ" "ムはコマンドライン引き数を 2 つ取る。 最初の引き数には、 B シグナル" "を生成するためのアラームタイマーの設定に使われる値を 秒単位で指定する。このシ" "グナルハンドラは、 I 内で B() を使って待っているセマ" "フォを、 B(3) を使って加算する。 2番目の引き数には、 " "B() に渡すタイムアウトまでの時間を秒単位で指定する。" #. type: Plain text #: build/C/man3/sem_wait.3:182 #, no-wrap msgid "" "$B< ./a.out 2 3>\n" "About to call sem_timedwait()\n" "sem_post() from handler\n" "sem_timedwait() succeeded\n" "$B< ./a.out 2 1>\n" "About to call sem_timedwait()\n" "sem_timedwait() timed out\n" msgstr "" "$B< ./a.out 2 3>\n" "About to call sem_timedwait()\n" "sem_post() from handler\n" "sem_timedwait() succeeded\n" "$B< ./a.out 2 1>\n" "About to call sem_timedwait()\n" "sem_timedwait() timed out\n" #. type: SS #: build/C/man3/sem_wait.3:184 #, no-wrap msgid "Program source" msgstr "プログラムのソース" #. type: Plain text #: build/C/man3/sem_wait.3:195 #, no-wrap msgid "" "#include Eunistd.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esemaphore.hE\n" "#include Etime.hE\n" "#include Eassert.hE\n" "#include Eerrno.hE\n" "#include Esignal.hE\n" msgstr "" "#include Eunistd.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esemaphore.hE\n" "#include Etime.hE\n" "#include Eassert.hE\n" "#include Eerrno.hE\n" "#include Esignal.hE\n" #. type: Plain text #: build/C/man3/sem_wait.3:197 #, no-wrap msgid "sem_t sem;\n" msgstr "sem_t sem;\n" #. type: Plain text #: build/C/man3/sem_wait.3:200 #, no-wrap msgid "" "#define handle_error(msg) \\e\n" " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n" msgstr "" "#define handle_error(msg) \\e\n" " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n" #. type: Plain text #: build/C/man3/sem_wait.3:210 #, no-wrap msgid "" "static void\n" "handler(int sig)\n" "{\n" " write(STDOUT_FILENO, \"sem_post() from handler\\en\", 24);\n" " if (sem_post(&sem) == -1) {\n" " write(STDERR_FILENO, \"sem_post() failed\\en\", 18);\n" " _exit(EXIT_FAILURE);\n" " }\n" "}\n" msgstr "" "static void\n" "handler(int sig)\n" "{\n" " write(STDOUT_FILENO, \"sem_post() from handler\\en\", 24);\n" " if (sem_post(&sem) == -1) {\n" " write(STDERR_FILENO, \"sem_post() failed\\en\", 18);\n" " _exit(EXIT_FAILURE);\n" " }\n" "}\n" #. type: Plain text #: build/C/man3/sem_wait.3:217 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " struct sigaction sa;\n" " struct timespec ts;\n" " int s;\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " struct sigaction sa;\n" " struct timespec ts;\n" " int s;\n" #. type: Plain text #: build/C/man3/sem_wait.3:223 #, no-wrap msgid "" " if (argc != 3) {\n" " fprintf(stderr, \"Usage: %s Ealarm-secsE Ewait-secsE\\en\",\n" " argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" " if (argc != 3) {\n" " fprintf(stderr, \"Usage: %s Ealarm-secsE Ewait-secsE\\en\",\n" " argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" #. type: Plain text #: build/C/man3/sem_wait.3:226 #, no-wrap msgid "" " if (sem_init(&sem, 0, 0) == -1)\n" " handle_error(\"sem_init\");\n" msgstr "" " if (sem_init(&sem, 0, 0) == -1)\n" " handle_error(\"sem_init\");\n" #. type: Plain text #: build/C/man3/sem_wait.3:228 #, no-wrap msgid " /* Establish SIGALRM handler; set alarm timer using argv[1] */\n" msgstr " /* Establish SIGALRM handler; set alarm timer using argv[1] */\n" #. type: Plain text #: build/C/man3/sem_wait.3:234 #, no-wrap msgid "" " sa.sa_handler = handler;\n" " sigemptyset(&sa.sa_mask);\n" " sa.sa_flags = 0;\n" " if (sigaction(SIGALRM, &sa, NULL) == -1)\n" " handle_error(\"sigaction\");\n" msgstr "" " sa.sa_handler = handler;\n" " sigemptyset(&sa.sa_mask);\n" " sa.sa_flags = 0;\n" " if (sigaction(SIGALRM, &sa, NULL) == -1)\n" " handle_error(\"sigaction\");\n" #. type: Plain text #: build/C/man3/sem_wait.3:236 #, no-wrap msgid " alarm(atoi(argv[1]));\n" msgstr " alarm(atoi(argv[1]));\n" #. type: Plain text #: build/C/man3/sem_wait.3:239 #, no-wrap msgid "" " /* Calculate relative interval as current time plus\n" " number of seconds given argv[2] */\n" msgstr "" " /* Calculate relative interval as current time plus\n" " number of seconds given argv[2] */\n" #. type: Plain text #: build/C/man3/sem_wait.3:242 #, no-wrap msgid "" " if (clock_gettime(CLOCK_REALTIME, &ts) == -1)\n" " handle_error(\"clock_gettime\");\n" msgstr "" " if (clock_gettime(CLOCK_REALTIME, &ts) == -1)\n" " handle_error(\"clock_gettime\");\n" #. type: Plain text #: build/C/man3/sem_wait.3:244 #, no-wrap msgid " ts.tv_sec += atoi(argv[2]);\n" msgstr " ts.tv_sec += atoi(argv[2]);\n" #. type: Plain text #: build/C/man3/sem_wait.3:248 #, no-wrap msgid "" " printf(\"main() about to call sem_timedwait()\\en\");\n" " while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)\n" " continue; /* Restart if interrupted by handler */\n" msgstr "" " printf(\"main() about to call sem_timedwait()\\en\");\n" " while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)\n" " continue; /* Restart if interrupted by handler */\n" #. type: Plain text #: build/C/man3/sem_wait.3:250 #, no-wrap msgid " /* Check what happened */\n" msgstr " /* Check what happened */\n" #. type: Plain text #: build/C/man3/sem_wait.3:258 #, no-wrap msgid "" " if (s == -1) {\n" " if (errno == ETIMEDOUT)\n" " printf(\"sem_timedwait() timed out\\en\");\n" " else\n" " perror(\"sem_timedwait\");\n" " } else\n" " printf(\"sem_timedwait() succeeded\\en\");\n" msgstr "" " if (s == -1) {\n" " if (errno == ETIMEDOUT)\n" " printf(\"sem_timedwait() timed out\\en\");\n" " else\n" " perror(\"sem_timedwait\");\n" " } else\n" " printf(\"sem_timedwait() succeeded\\en\");\n" #. type: Plain text #: build/C/man3/sem_wait.3:261 #, no-wrap msgid "" " exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);\n" "}\n" msgstr "" " exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);\n" "}\n" #. type: Plain text #: build/C/man3/sem_wait.3:268 msgid "" "B(2), B(3), B(3), B(7), " "B