getc_unlocked()、getchar_unlocked()、putc_unlocked()、 putchar_unlocked() — 明示的なクライアント・ロックが掛けられた stdio

標準

標準/拡張機能 C/C++ 依存項目

Single UNIX Specification、バージョン 3

両方  z/OS V1R8

形式

#define _UNIX03_SOURCE 
#include <stdio.h>

int getc_unlocked(FILE *stream);
int getchar_unlocked(void);
int putc_unlocked(int c, FILE *stream);
int putchar_unlocked(int c);

機能説明

関数 getc()、getchar()、putc()、および putchar() (それぞれ getc_unlocked()、 getchar_unlocked()、 putc_unlocked()、 および putchar_unlocked() という名前) のバージョンの機能は、これらがスレッド・セーフではないという点を除けば、そのオリジナルのバージョンと同等です。 これらの関数がマルチスレッドのプログラムで安全に使用される可能性があるのは、呼び出しスレッドが (FILE*) オブジェクトを所有している間にこの関数が呼び出された場合に限られます。これは、flockfile() または ftrylockfile() 関数への呼び出しが正常に行われた後と同様です。

getc_unlocked、getchar_unlocked、putc_unlocked、putchar_unlocked は、かなり効率の良いマクロの形式で提供されます。パフォーマンスのために、関数形式ではなく マクロ形式を使用することをお勧めします。デフォルト解釈で、stdio.h は、これらの関数のマクロ版を提供します。

ただし、関数形式を得るには、以下の 1 つ以上の操作を行います。
  • 呼び出し文を括弧で囲む。例えば、(getc_unlocked)
  • #undef を指定する (例えば #undef getc_unlocked)。
  • C のみに関しては、stdio.h を組み込まない

getc_unlocked、getchar_unlocked、putc_unlocked、および putchar_unlocked は、type=record または type=blocked を使用してオープンされたファイルではサポートされません。

getc_unlocked、getchar_unlocked、putc_unlocked、putchar_unlocked には、書き込みの直後の読み取りや 読み取りの直後の書き込みについて、すべての読み取り操作または書き込み操作と同じ制限があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。
注: これらの関数のマクロ形式は、その入力引数を複数回再評価するため、副次的作用を伴う式となる引数を受け渡さないでください。

戻り値

getc()、getchar() - 文字の読み取りおよび putc()、putchar() - 文字の書き込みを参照してください。

関連情報