オペレーティングシステム関連のユーティリティ¶
-
int
Py_FdIsInteractive
(FILE *fp, const char *filename)¶ filename という名前の標準 I/O ファイル fp が対話的 (interactive) であると考えられる場合に真 (非ゼロ) を返します。これは
isatty(fileno(fp))
が真になるファイルの場合です。グローバルなフラグPy_InteractiveFlag
が真の場合には、 filename ポインタが NULL か、名前が'<stdin>'
または'???'
のいずれかに等しい場合にも真を返します。
-
void
PyOS_AfterFork
()¶ プロセスが fork した後の内部状態を更新するための関数です; fork 後 Python インタプリタを使い続ける場合、新たなプロセス内でこの関数を呼び出さねばなりません。新たなプロセスに新たな実行可能物をロードする場合、この関数を呼び出す必要はありません。
-
int
PyOS_CheckStack
()¶ インタプリタがスタック空間を使い尽くしたときに真を返します。このチェック関数には信頼性がありますが、
USE_STACKCHECK
が定義されている場合 (現状では Microsoft Visual C++ コンパイラでビルドした Windows 版) にしか利用できません .USE_STACKCHECK
は自動的に定義されます; 自前のコードでこの定義を変更してはなりません。
-
PyOS_sighandler_t
PyOS_getsig
(int i)¶ シグナル i に対する現在のシグナルハンドラを返します。この関数は
sigaction()
またはsignal()
のいずれかに対する薄いラッパです。sigaction()
やsignal()
を直接呼び出してはなりません!PyOS_sighandler_t
はvoid (*)(int)
の typedef による別名です。
-
PyOS_sighandler_t
PyOS_setsig
(int i, PyOS_sighandler_t h)¶ シグナル i に対する現在のシグナルハンドラを h に設定します; 以前のシグナルハンドラを返します。この関数は
sigaction()
またはsignal()
のいずれかに対する薄いラッパーです。sigaction()
やsignal()
を直接呼び出してはなりません!PyOS_sighandler_t
はvoid (*)(int)
の typedef による別名です。
システム関数¶
sys
モジュールが提供している機能にCのコードからアクセスする関数です。すべての関数は現在のインタプリタスレッドの sys
モジュールの辞書に対して動作します。この辞書は内部のスレッド状態構造体に格納されています。
-
PyObject *
PySys_GetObject
(char *name)¶ - Return value: Borrowed reference.
sys
モジュールの name オブジェクトを返すか、存在しなければ例外を設定せずに NULL を返します。
-
FILE *
PySys_GetFile
(char *name, FILE *def)¶ sys
モジュール内のオブジェクト name に関連付けられたFILE*
を返します。 name がなかった場合やFILE*
に関連付けられていなかった場合は def を返します。
-
int
PySys_SetObject
(char *name, PyObject *v)¶ v が NULL で無い場合、
sys
モジュールの name に v を設定します。 v が NULL なら、 sys モジュールから name を削除します。成功したら0
を、エラー時は-1
を返します。
-
void
PySys_ResetWarnOptions
()¶ sys.warnoptions
を、空リストにリセットします。
-
void
PySys_AddWarnOption
(char *s)¶ sys.warnoptions
に s を追加します。
-
void
PySys_SetPath
(char *path)¶ sys.path
を path に含まれるパスの、リストオブジェクトに設定します。 path はプラットフォームの検索パスデリミタ(Unixでは:
, Windows では;
) で区切られたパスのリストでなければなりません。
-
void
PySys_WriteStdout
(const char *format, ...)¶ format で指定された出力文字列を
sys.stdout
に出力します。切り詰めが起こった場合を含め、例外は一切発生しません (後述)。format は、フォーマット後の出力文字列のトータルの大きさを1000バイト以下に抑えるべきです。– 1000 バイト以降の出力文字列は切り詰められます。特に、制限のない "%s" フォーマットを使うべきではありません。"%.<N>s" のようにして N に10進数の値を指定し、<N> + その他のフォーマット後の最大サイズが1000を超えないように設定するべきです。同じように "%f" にも気を付ける必要があります。非常に大きい数値に対して、数百の数字を出力する可能性があります。
問題が発生したり、
sys.stdout
が設定されていなかった場合、フォーマット後のメッセージは本物の(Cレベルの) stdout に出力されます。
-
void
PySys_WriteStderr
(const char *format, ...)¶ 上と同じですが、
sys.stderr
か stderr に出力します。
プロセス制御¶
-
void
Py_FatalError
(const char *message)¶ 致命的エラーメッセージ (fatal error message) を出力してプロセスを強制終了 (kill) します。後始末処理は行われません。この関数は、Python インタプリタを使い続けるのが危険であるような状況が検出されたとき; 例えば、オブジェクト管理が崩壊していると思われるときにのみ、呼び出されるようにしなければなりません。Unixでは、標準 C ライブラリ関数
abort()
を呼び出してcore
を生成しようと試みます。
-
void
Py_Exit
(int status)¶ 現在のプロセスを終了 (exit) します。この関数は
Py_Finalize()
を呼び出し、次いで標準 C ライブラリ関数exit(status)
を呼び出します。
-
int
Py_AtExit
(void (*func)())¶ Py_Finalize()
から呼び出される後始末処理を行う関数 (cleanup function) を登録します。後始末関数は引数無しで呼び出され、値を返しません。最大で 32 の後始末処理関数を登録できます。登録に成功すると、Py_AtExit()
は0
を返します; 失敗すると-1
を返します。最後に登録した後始末処理関数から先に呼び出されます。各関数は高々一度しか呼び出されません。 Python の内部的な終了処理は後始末処理関数より以前に完了しているので、 func からはいかなる Python API も呼び出してはなりません。