オペレーティングシステムユーティリティ—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/c-api/sys
移動先:案内検索

オペレーティングシステムユーティリティ

int Py_FdIsInteractive(FILE *fp, const char *filename)
filename という名前の標準I / Oファイル fp がインタラクティブであると見なされる場合は、true(ゼロ以外)を返します。 これは、isatty(fileno(fp))が真であるファイルの場合です。 グローバルフラグPy_InteractiveFlagがtrueの場合、 filename ポインタが NULL の場合、または名前が文字列'<stdin>'または'???'
void PyOS_AfterFork()
プロセスフォーク後に内部状態を更新する関数。 Pythonインタープリターを引き続き使用する場合は、新しいプロセスでこれを呼び出す必要があります。 新しい実行可能ファイルが新しいプロセスにロードされる場合、この関数を呼び出す必要はありません。
int PyOS_CheckStack()
インタプリタがスタックスペースを使い果たしたときにtrueを返します。 これは信頼できるチェックですが、USE_STACKCHECKが定義されている場合にのみ使用できます(現在、WindowsではMicrosoft Visual C ++コンパイラを使用しています)。 USE_STACKCHECKは自動的に定義されます。 独自のコードで定義を変更しないでください。
PyOS_sighandler_t PyOS_getsig(int i)
シグナル i の現在のシグナルハンドラーを返します。 これは、sigaction()またはsignal()のいずれかの薄いラッパーです。 これらの関数を直接呼び出さないでください。 PyOS_sighandler_tは、void (*)(int)のtypedefエイリアスです。
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
シグナル i のシグナルハンドラーを h に設定します。 古いシグナルハンドラを返します。 これは、sigaction()またはsignal()のいずれかの薄いラッパーです。 これらの関数を直接呼び出さないでください。 PyOS_sighandler_tは、void (*)(int)のtypedefエイリアスです。


システム機能

これらは、 sys モジュールの機能をCコードにアクセスできるようにするユーティリティ関数です。 これらはすべて、内部スレッド状態構造に含まれている現在のインタープリタースレッドの sys モジュールのdictで機能します。

PyObject *PySys_GetObject(char *name)
sys モジュールからオブジェクト name を返します。存在しない場合は、例外を設定せずに NULL を返します。
FILE *PySys_GetFile(char *name, FILE *def)
sys モジュールのオブジェクト name に関連付けられたFILE*を返します。 name がにない場合は def を返します。モジュールまたはFILE*に関連付けられていません。
int PySys_SetObject(char *name, PyObject *v)
vNULL の場合を除き、 sys モジュールの namev に設定します。 がsysモジュールから削除されました。 成功した場合は0を返し、エラーの場合は-1を返します。
void PySys_ResetWarnOptions()
sys.warnoptions を空のリストにリセットします。
void PySys_AddWarnOption(char *s)
ssys.warnoptions に追加します。
void PySys_SetPath(char *path)
sys.path を、 path で見つかったパスのリストオブジェクトに設定します。これは、プラットフォームの検索パス区切り文字(Unixでは:、[ X175X] (Windowsの場合)。
void PySys_WriteStdout(const char *format, ...)

format で記述された出力文字列を sys.stdout に書き込みます。 切り捨てが発生した場合でも、例外は発生しません(以下を参照)。

format は、フォーマットされた出力文字列の合計サイズを1000バイト以下に制限する必要があります。1000バイトを超えると、出力文字列は切り捨てられます。 特に、これは無制限の「%s」形式が発生してはならないことを意味します。 これらは「%」を使用して制限する必要があります。 s」ここでは、次のように計算された10進数です。 さらに、他のフォーマットされたテキストの最大サイズは1000バイトを超えません。 また、非常に大きな数に対して数百桁を印刷できる「%f」にも注意してください。

問題が発生した場合、または sys.stdout が設定されていない場合、フォーマットされたメッセージは実際の(Cレベル) stdout に書き込まれます。

void PySys_WriteStderr(const char *format, ...)
上記と同じですが、代わりに sys.stderr または stderr に書き込んでください。


プロセス制御

void Py_FatalError(const char *message)
致命的なエラーメッセージを出力し、プロセスを強制終了します。 クリーンアップは実行されません。 この関数は、Pythonインタープリターの使用を継続するのが危険になる条件が検出された場合にのみ呼び出す必要があります。 たとえば、オブジェクト管理が破損しているように見える場合。 Unixでは、標準Cライブラリ関数abort()が呼び出され、coreファイルの生成が試みられます。
void Py_Exit(int status)
現在のプロセスを終了します。 これにより、 Py_Finalize()が呼び出され、次に標準Cライブラリ関数exit(status)が呼び出されます。
int Py_AtExit(void (*func)())
Py_Finalize()によって呼び出されるクリーンアップ関数を登録します。 クリーンアップ関数は引数なしで呼び出され、値を返さないはずです。 最大32個のクリーンアップ機能を登録できます。 登録が成功すると、 Py_AtExit()0を返します。 失敗すると、-1を返します。 最後に登録されたクリーンアップ関数が最初に呼び出されます。 各クリーンアップ関数は、最大で1回呼び出されます。 Pythonの内部ファイナライズはクリーンアップ関数の前に完了するため、 func によってPythonAPIを呼び出さないでください。