errno(2) FreeBSD 一般コマンドマニュアル

errno

前のページ 上に戻る 次のページ

errno




書式

     #include <errno.h>


解説

     このセクションでは、システムコール、エラー戻り、その他の共通な定義および
     コンセプトの概要について説明します。


戻り値

     ほとんどすべてのシステムコールが外部識別子 errno によって参照されるエラー
     番号を備えています。 <sys/errno.h> 内でこの識別子は次のように定義されてい
     ます。

           extern int * __error();
           #define errno (* __error())

     __error() 関数は、初期スレッド以外のスレッドについては、スレッドに固有な
     構造体のフィールドを指すポインタを返します。初期スレッドと非スレッドプロ
     セスの場合、 __error() は、以前の定義と互換性のあるグローバル変数 errno
     を指すポインタを返します。

     システムコールは、エラーを検出すると、障害を示す整数値 (通常は -1) を返
     し、それに応じて変数 errno を設定します。 <これにより、 -1 を受け取ったと
     きに障害を解釈し、それに応じた行動をとることを可能にします。> 呼び出しが
     正常に完了した場合は errno が設定されることはありません。いったん設定され
     ると、別のエラーが起きるまでそのままです。これはエラーの後でだけ調べるべ
     きです。多くのシステムコールがこれらのエラー番号の意味を過重にしており、
     意味は呼び出しのタイプと状況に従って解釈する必要があることに注意してくだ
     さい。

     以降に示すのはエラーの完全なリストであり、これらの名前は <sys/errno.h> に
     記載されています。

     0 Error 0未使用。

     1 EPERM Operation not permitted「操作が許されません」適切な特権をもつプロ
             セスに限定された操作、またはファイルその他のリソースの所有者に限
             定された操作を実行しようとしました。

     2 ENOENT No such file or directory「そのようなファイルまたはディレクトリ
             はありません」指定のパス名の構成要素が存在しないか、またはパス名
             が空の文字列でした。

     3 ESRCH No such process「そのようなプロセスはありません」指定のプロセス
             ID に対応するプロセスが見つかりませんでした。

     4 EINTR Interrupted function call「関数呼び出しが割り込まれました」割り込
             み可能な関数の実行中に、非同期シグナル (たとえば、 SIGINT または
             SIGQUIT) がプロセスによって捕らえられました。シグナルハンドラが正
             常に戻ると、割り込みされた関数呼び出しがエラー状態を返したように
             見えます。

             65536 バイト (<sys/param.h> 内の NCARGS) を越えました。

     8 ENOEXEC Exec format error「実行形式エラーです」実行を要求されたファイル
             のパーミッションは適切でしたが、実行可能ファイルとして要求される
             形式ではありませんでした。

     9 EBADF Bad file descripter「ファイル記述子が不良です」ファイル記述子引数
             が範囲外であったか、開いていないファイルを参照していたか、または
             書込み (読取り) 専用に開かれたファイルに読取り (書込み) 要求が行
             われました。

     10 ECHILD No child processes「子プロセスがありません」 wait(2) または
             waitpid(2) 関数が、子プロセスが存在しないか、待機されたことのない
             子プロセスを持たないプロセスによって実行されました。

     11 EDEADLK Resource deadlock avoided「リソースデッドロックを回避しまし
             た」デッドロック状況になる可能性のあるシステムリソースをロックし
             ようとしました。

     12 ENOMEM Cannot allocate memory「メモリの割り当てができません」新しいプ
             ロセスイメージが、ハードウェアまたはシステムが課するメモリ管理制
             約によって許容されるより多くのメモリを要求しました。スワップ空間
             の不足は通常、一時的です。しかし、コアの不足は一時的ではありませ
             ん。ソフト限界を対応するハード限界まで増加させることはできます。

     13 EACCES Permission denied「パーミッションが拒絶されました」ファイルアク
             セスパーミッションで禁止されている方法でファイルにアクセスしよう
             としました。

     14 EFAULT Bad address「不正なアドレスです」呼び出しで渡された引数を使おう
             としているときに、システムが無効なアドレスを検出しました。

     15 ENOTBLK Not a block device「ブロックデバイスではありません」ブロックデ
             バイス操作が、非ブロックデバイスまたはファイルについて試みられま
             した。

     16 EBUSY Resource busy「リソースがビジー状態です」その時点で使用されてい
             るシステムリソースを、その要求と干渉するであろう方法で使おうとし
             ました。

     17 EEXIST File exists「ファイルが存在します」すでに存在するファイルが不適
             切なコンテキストで指定されました。たとえば、 link(2) 関数における
             新しいリンク名としてです。

     18 EXDEV Improper link「不適切なリンクです」別のファイルシステム上のファ
             イルへのハードリンクが試みられました。

     19 ENODEV Operation not supported「操作がデバイスによってサポートされてい
             ません」あるデバイスに不適切な関数を適用しようしました。たとえ
             ば、プリンタのような書込み専用デバイスを読み込もうとしました。

     20 ENOTDIR Not a directory「ディレクトリではありません」指定のパス名の構

     24 EMFILE Too many open files「オープンしているファイルが多すぎます」 <現
             在のリリースでは、プロセス1個につきオープンできるファイル数の上限
             は 64 です。> getdtablesize(2) で現在の限界を取得できます。

     25 ENOTTY Inappropriate ioctl for device「デバイスに不適切な ioctl です」
             ファイルまたは特殊デバイスに不適切な操作を要求する制御関数 (
             ioctl(2) を参照) を試みました。

     26 ETXTBSY Text file busy「テキストファイルがビジーです」別のプロセスに
             よって書込み用にオープンされた純粋プロシジャ (共有テキスト) ファ
             イルから新しいプロセスを作ろうとしたか、または純粋プロシジャファ
             イルが実行されている間に、書込みアクセスを要求する open(2) 呼び出
             しが実行されました。

     27 EFBIG File too large「ファイルが大きすぎます」ファイルのサイズが最大値
             を超過しました (約 2.1E9 バイト)。

     28 ENOSPC Device out of space「デバイスの空き領域不足です」該当するファイ
             ルシステムで新たなディスクブロックが利用できないために、通常ファ
             イルへの write(2) 処理、ディレクトリの作成、シンボリックリンクの
             作成、ディレクトリエントリの作成が失敗しました。または、該当する
             ファイルシステムで新たな inode が利用できないために、新しく作成す
             るファイルに対する inode の割り当てが失敗しました。

     29 ESPIPE Illegal seek「不正なシークです」 lseek(2) 関数がソケット、パイ
             プ、または FIFO に対して実行されました。

     30 EROFS Read-only file system「読取り専用ファイルシステムです」ファイル
             またはディレクトリを変更しようとする試みが、その時点で読取り専用
             であるファイルシステムに対して行われました。

     31 EMLINK Too many links「リンクが多すぎます」 1 つのファイルについて許容
             されるハードリンクの最大数を超過しました (1 ファイルにつきハード
             リンク数の限界は 32767 です)。

     32 EPIPE Broken pipe「パイプが破壊されてました」データを読み取るプロセス
             のないパイプ、ソケット、または FIFO に対しての書込みです。

     33 EDOM Numerical argument out of domain「数値引数が領域外です」数値入力
             引数が、数学関数の定義域の外側にありました。

     34 ERANGE Numerical result out of range「数値結果が範囲外です」関数の数値
             結果が大きすぎて、利用できる場所に入りません (おそらく精度を超過
             したのでしょう)。

     35 EAGAIN Resource temporary unavailable「リソースが一時的に利用できませ
             ん」これは一時的な状況であり、後で同じルーチンを呼び出した時に正
             常に完了する可能性があります。

     36 EINPROGRESS Operation now in progress「操作が現在進行中です」完了する
             のに時間のかかる操作 ( connect(2) など) をノンブロッキングオブ
             ケットで送信されました。

     41 EPROTOTYPE Protocol wrong type for socket「ソケットに対するプロトコル
             のタイプが間違っています」要求されたソケットタイプではサポートさ
             れないプロトコルが指定されました。たとえば、タイプ SOCK_STREAM で
             は、 ARPA インターネット UDP プロトコルを使用できません。

     42 ENOPROTOOPT Protocol not available「プロトコルが利用できません」
             getsockopt(2) 呼び出しまたは setsockopt(2) 呼び出しで、間違ったオ
             プションまたはレベルが指定されました。

     43 EPROTONOSUPPORT Protocol not supported「プロトコルがサポートされていま
             せん」指定したプロトコルがシステム内に組み込まれていないか、また
             はそのプロトコルの実装が存在しません。

     44 ESOCKTNOSUPPORT Socket type not supported「ソケットタイプがサポートさ
             れていません」指定したソケットタイプがシステム内に組み込まれてな
             いか、またはそのソケットタイプの実装が存在しません。

     45 EOPNOTSUPP Operation not supported「操作がサポートされていません」引数
             が指すオブジェクトのタイプは、指定した操作をサポートしていませ
             ん。このエラーが起きるのは、通常は、ファイル記述子がこの操作をサ
             ポートできないファイルまたはソケットを参照しているときです。たと
             えば、データグラムソケット上で接続を accept しようしたときです。

     46 EPFNOSUPPORT Protocol family not supported「プロトコルファミリがサポー
             トされていません」指定したプロトコルファミリがシステムに組み込ま
             れていないか、またはそのプロトコルファミリの実装が存在していませ
             ん。

     47 EAFNOSUPPORT Address family not supported by protocol family「アドレス
             ファミリがプロトコルファミリによってサポートされていません」要求
             したプロトコルと互換性のないアドレスが使用されました。たとえば、
             ARPA インターネットプロトコルで NS アドレスを使用できるとは必ずし
             も期待すべきではないでしょう。

     48 EADDRINUSE Address already in use「アドレスが既に使用中です」各アドレ
             スごとに、一度に 1 つだけを利用できます。

     49 EADDRNOTAVAIL Cannot assing requested address「要求されたアドレスを割
             り当てできません」通常は、このマシン上にないアドレスでソケットを
             作成しようとした結果です。

     50 ENETDOWN Network is down「ネットワークがダウンしています」ソケット操作
             の結果、動作していないネットワークに遭遇しました。

     51 ENETUNREACH Network is unreachable「ネットワークに到達できません」到達
             できないネットワークに向けてソケット操作を試みました。

     52 ENETRESET Network dropped connection on reset「リセットによりネットワ
             ークの接続が失われました」接続していたホストがクラッシュして再起
             動されました。
             既に接続されたソケットに対して connect(2) 要求を行ないました。ま
             たは、接続済みのソケットに対する sendto(2)sendmsg(2) 要求に際
             し、既に接続されているのに宛先を指定しました。

     57 ENOTCONN Socket is not connected「ソケットは接続されていません」ソケッ
             トが接続されておらず、しかも (データグラムソケットを送信するとき
             に) アドレスが指定されていなかったために、データを送信または受信
             する要求が許可されませんでした。

     58 ESHUTDOWN Cannot send after socket shutdown「ソケットのシャットダウン
             の後で送信ができません」以前に shutdown(2) を呼び出して既にシャッ
             トダウンさせてしまったために、ソケットに対しデータを送信する要求
             が許可されませんでした。

     60 ETIMEDOUT Operation timed out「操作がタイムアウトしました」ある時間が
             経過するまでに接続相手が適切に応答しなかったために、 connect(2)
             要求または send(2) 要求の処理に失敗しました (タイムアウトの期間は
             通信プロトコルに左右されます)。

     61 ECONNREFUSED Connection refused「接続が拒絶されました」接続相手のマシ
             ンが接続を自ら拒否したので、接続を確立できませんでした。これは、
             通常、相手ホストで有効でないサービスに接続しようとした結果です。

     62 ELOOP Too many levels of symbolic links「シンボリックリンクのレベルが
             多すぎます」パス名の探索に、32 (MAXSYMLINKS) を越えるシンボリック
             リンクが含まれていました。

     63 ENAMETOOLONG File name too long「ファイル名が長すぎます」パス名の構成
             要素が 255 (MAXNAMELEN) 文字を越えているか、またはパス名全体が
             1023 (MAXPATHLEN-1) 文字を越えています。

     64 EHOSTDOWN Host is down「ホストがダウンしています」宛先ホストがダウンし
             ているためにソケット操作が失敗しました。

     65 EHOSTUNREACH No route to host「ホストへの経路はありません」到達不可能
             なホストにソケット操作をしようとしました。

     66 ENOTEMPTY Directory not empty「ディレクトリが空ではありません」ディレ
             クトリ削除または名前変更の呼び出しに対し、 `.' と `..' 以外のエン
             トリを含むディレクトリが指定されました。

     67 EPROCLIM Too many processes「プロセスが多すぎます」

     68 EUSERS Too many users「ユーザが多すぎます」クォータシステムがテーブル
             エントリを使い切りました。

     69 EDQUOT Disc quota exceeded「ディスククォータが超過しました」ユーザの
             ディスクブロッククォータを使い尽くしたために、通常のファイルへの
             write(2) 、ディレクトリの作成、シンボリックリンクの作成、ディレク
             トリエントリの作成が失敗しました。もしくは、ユーザの inode クォー
             タを使い尽くしたために、新しく作成されたファイルのための inode の
             割り当てに失敗しました。
             したプログラムがリモートホストに登録されていません。

     75 EPROGMISMATCH Program version wrong「プログラムバージョンが間違ってい
             ます」要求したバージョンのプログラムが、リモートホスト (RPC) 上で
             利用できません。

     76 EPROCUNAVAIL Bad procedure for program「プログラムにとって間違った手続
             きです」リモートプログラム内に存在しない手続きに対し RPC 呼び出し
             が試みられました。

     77 ENOLCK No locks available「ロックが利用できません」システムが課した、
             同時ファイルロック数の制限に達しました。

     78 ENOSYS Function not implemented「関数が実装されていません」このシステ
             ムで利用できないシステムコールを実行しようとしました。

     79 EFTYPE Inappropriate file type or format「ファイルの型または形式が不適
             切です」操作が誤った型のファイルに行われたか、またはデータファイ
             ルの形式が誤っています。

     80 EAUTH Authentication error「認証エラーです」 NFS ファイルシステムをマ
             ウントするために不正な認証チケットを使おうとしました。

     81 ENEEDAUTH Need authenticator「認証物が必要です」指定した NFS ファイル
             システムをマウントするために認証チケットが必要です。

     82 EIDRM Identifier removed「識別子は削除されました」 IPC の識別子は、現
             在のプロセスがそれで待っている間に削除されました。

     83 ENOMSG No message of desired type「要求された型のメッセージがありませ
             ん」要求した型のメッセージが IPC メッセージキューにありません。ま
             たは、メッセージカタログは要求したメッセージを含んでいません。

     84 EOVERFLOW Value too large to be stored in data type「データタイプに格
             納するには大きすぎる値です」関数からの数値の戻り値が、呼び出し側
             で用意した場所に格納するには大きすぎます。

     85 ECANCELED Operation canceled「処理はキャンセルされました」予定されてい
             た処理はキャンセルされました。

     86 EILSEQ Illegal byte sequence「不正なバイト列です」多バイト文字をデコー
             ドしている際に、関数は不正または不完全なバイト列もしくは不正なワ
             イド文字に遭遇しました。


定義

     プロセス ID (Process ID)
             システム内のアクティブな各プロセスは、プロセス ID と呼ばれる負で
             ない整数によって一意に識別されます。この ID の範囲は 0 から 99999
             までです。

     親プロセス ID (Parent process ID)
             新しいプロセスは、現在のアクティブなプロセスから作成されます (
             セッションは 1 つ以上のプロセスグループの集合です。セッションは
             setsid(2) の呼び出しが成功すると作成されます。これによって、呼び
             出したプロセスは、新規のセッションが 1 つだけ持つプロセスグループ
             の唯一のメンバになります。

     セッションリーダ (Session leader)
             setsid(2) の呼び出しの成功によって、新しいセッションを作成したプ
             ロセスは、セッションリーダとして知られます。端末を自分が制御する
             端末 ( termios(4) を参照) として取得できるのは、セッションリーダ
             だけです。

     制御プロセス (Controlling process)
             制御端末を持つセッションリーダが制御プロセスです。

     制御端末 (Controlling terminal)
             セッションに関連づけられている端末は、そのセッションとそのメンバ
             に対する制御端末として知られます。

     端末プロセスグループ ID (Terminal Process Group ID)
             端末は、セッションリーダによって制御端末として取得されます。ひと
             たび端末がセッションに関連づけられると、端末プロセスグループ ID
             をプロセスグループの ID に設定することによって、そのセッション内
             のどのプロセスグループでも、フォアグラウンドに置くことができるよ
             うになります。この機能は、同じ端末をめぐり競合している複数のジョ
             ブの間で調停を行なうために用いられます ( csh(1)tty(4) を参
             照)。

     孤児プロセスグループ (Orphaned Process Group)
             プロセスグループは、ジョブ制御を行なうシェルの制御下にない場合、
             孤児になったとみなされます。より正確に言うと、そのプロセスグルー
             プのメンバはどれも、そのグループと同じセッションに属す親プロセス
             を持たず、かつ、親プロセスが別のプロセスグループに属す場合、その
             プロセスグループは孤児になります。なお、プロセスが終了するとき、
             その子プロセスの親プロセスは init(8) となるように変更されます。そ
             してこれは別個のセッションになります。孤児になったプロセスグルー
             プのメンバの全てが、必ずしも孤児になったプロセス (プロセスを作成
             したプロセスが終了した) というわけではありません。この定義によ
             り、セッションリーダのプロセスグループは孤児になります。

     実ユーザ ID と実グループID (Real User ID and Real Group ID)
             システム上の各ユーザは、実ユーザ ID と呼ばれる正の整数によって識
             別されます。

             各ユーザは、1 つまたは複数のグループのメンバでもあります。これら
             のグループの 1 つは他のものから区別され、アカウンティング機能を実
             現するのに使用されます。この区別されたグループに対応する正の整数
             は、実グループ ID と呼ばれます。

             すべてのプロセスは実ユーザ ID と実グループ ID を持っています。こ
             れらは、そのプロセスを作成したプロセスと等価な属性値を使って初期
             化されます。

             バ) は複製されるので、 set-group-ID プログラムの実行の結果、もと
             もと持っていた (実) グループ ID が失われることはありません。

             グループアクセスリストは、リソースへのアクセスが可能かどうかを決
             定するためにだけ使用されるグループ ID の集合です。アクセスチェッ
             クは、以降の ``ファイルアクセスパーミッション'' で説明するように
             行われます。

     保存されたセットユーザ ID と保存されたセットグループ ID (Saved Set User
             ID and Saved Set Group ID)
             プロセスが新しいファイルを実行するとき、ファイルが set-user-ID で
             あれば、実効ユーザ ID はそのファイルの所有者に設定され、ファイル
             が set-group-ID であれば、実効グループ ID (グループアクセスリスト
             の最初の要素) はファイルのグループに設定されます。それからプロセ
             スの実効ユーザ ID は saved set-user-ID として記録され、プロセスの
             実効ユーザ ID は saved set-group-ID として記録されます。これらの
             記録された値は、実 ID ( setuid(2) を参照) に戻った後で、実効ユー
             ザ ID または実効グループ ID をこれらの値に回復するために利用でき
             ます。 (POSIX.1 では saved set-user-ID と saved set-group-ID はオ
             プションであり、 setuid および setgid の内部で使用されますが、こ
             れはスーパーユーザについて意図どおりには機能しません)。

     スーパーユーザ (super-user)
             実効ユーザ ID が 0 の場合、そのプロセスは スーパーユーザプロセス
             として認識され、特別な権利が認められます。

     特殊プロセス (Special Processes)
             プロセス ID が 0, 1, 2 のプロセスは特殊です。プロセス 0 はスケ
             ジューラです。プロセス 1 は初期化プロセス init(8) であり、システ
             ム内の他の各プロセスの祖先です。これはプロセス構造を制御するため
             に使用されます。プロセス 2 はページングデーモンです。

     記述子 (Descriptor)
             open(2), dup(2) によってファイルが参照されるとき、または pipe(2),
             socket(2), socketpair(2) によってソケットが作成されるときにシステ
             ムによって割り当てられる整数です。この整数は、指定のプロセスやそ
             の子プロセスから、そのファイルやソケットへのアクセスパスを一意に
             識別します。

     ファイル名 (File Name)
             最高 255 (MAXNAMELEN) 文字からなる名前であって、通常ファイル、特
             殊ファイル、ディレクトリに名前を付けるのに使用されます。

             これらの文字は、0 (NUL) および `/' (スラッシュ) の ASCII コードを
             除きすべての ASCII 文字の集合から選択できます。

             なお、一般に、ファイル名の一部として `*', `?', `[', `]' を使用す
             るのは賢明ではありません。シェルによってこれらの文字には特殊な意
             味がつけられるからです。

     パス名 (Path Name)
             パス名は、 NUL で終端された文字列です。スラッシュ `/' (省略可能)
             ばれます。ドットは、そのディレクトリ自体を指し、ドット-ドットはそ
             の親ディレクトリを指します。

     ルートディレクトリと現在の作業ディレクトリ (Root Directory and Current
             Working Directory)
             各プロセスは、ルートディレクトリと現在の作業ディレクトリという概
             念を持つとされてきました。これらの概念はパス名検索を解決する際に
             用いられます。プロセスのルートディレクトリは、ルートファイルシス
             テムのルートディレクトリである必要はありません。

     ファイルアクセスパーミッション (File Access Permission)
             ファイルシステム内の各ファイルはアクセスパーミッションの集合を
             持っています。これらのパーミッションは、プロセスがファイルについ
             て要求された操作 (たとえば、書込み用にファイルをオープンする) を
             行なってもよいかどうかを判定するのに使用されます。アクセスパー
             ミッションはファイルが作成されたときに設定されます。アクセスパー
             ミッションは chmod(2) 呼び出しを用いて後から変更することもできま
             す。

             ファイルアクセスでは、ファイルが読取りが許されているかどうか、書
             込みが許されているかどうか、実行が許されているかどうか、によって
             分類されます。ディレクトリファイルでは、ディレクトリを検索しても
             よいかどうかを制御するのに実行パーミッションを使用します。

             システムがファイルアクセスパーミッションを解釈するにあたり、ユー
             ザの 3 つの異なるクラス (ファイルの所有者、ファイルのグループ内の
             ユーザ、その他) のどれに適用するかによって解釈します。各ファイル
             は、これらの各クラスについて、独立したアクセスパーミッションの集
             合を持っています。アクセスチェックが行なわれると、システムは、呼
             び出し側に適用できるアクセス情報をチェックすることによって、パー
             ミッションが認可されるかどうかを判定します。

             ファイルについての読取り、書込み、実行/検索の各パーミッションは、
             次の場合にプロセスに認可されます。

             プロセスの実効ユーザ ID がスーパーユーザである場合 (注: スーパー
             ユーザであっても、実行可能でないファイルを実行することはできませ
             ん)。

             プロセスの実効ユーザ ID がファイルの所有者のユーザ ID に一致し、
             所有者のパーミッションがアクセスを許可している場合。

             プロセスの実効ユーザ ID がファイルの所有者のユーザ ID と一致せず
             に、プロセスの実効グループ ID がファイルのグループ ID と一致する
             かまたはファイルのグループ ID がプロセスのグループアクセスリスト
             内にあるかのどちらかであり、グループパーミッションがアクセスを許
             容している場合。

             プロセスの実効ユーザ ID も実効グループ ID もグループアクセスリス
             トも、ファイルの対応するユーザ ID およびグループ ID と一致しない
             が、``その他のユーザ'' のパーミッションがアクセスを許容する場合。


             実際のシステムはそれぞれ、いくつかの通信プロトコルの集合をサポー
             トしています。プロトコルの集合はそれぞれある特定の形式のアドレス
             をサポートします。アドレスファミリは、あるプロトコルのグループに
             対応するアドレスの集合です。ソケットはそれぞれ、ソケットが作成さ
             れたアドレスファミリから選択したアドレスを持ちます。


関連項目

     intro(3), perror(3)

FreeBSD 4.4                    February 27, 1995                   FreeBSD 4.4

ABELNET VPSサービス