標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <unistd.h>
int truncate(const char *path, off_t length);
path によって指示されたファイルを 指示された length まで切り捨てます。 呼び出しプロセスは、ファイルの書き込み許可をもっている 必要があります。ファイル・サイズが length を超えると、超過分のデータは廃棄さ れます。ファイル・サイズが length よりも小さいと、古い長さと新しい長さの間 のバイトがゼロとして読み取られます。ファイルのサイズへの変更は、ファイル・オフセットには影響を与えません。
truncate() によって、ファイル・サイズがプロセスの ソフト・ファイル・サイズ限界を超えると、truncate() は 失敗し、SIGXFSZ シグナルがそのプロセスに対して生成されます。
正常に実行された場合、truncate() は、ファイルの st_ctime フィールドと st_mtime フィールドにマークを付けます。
正常に実行されなかった場合、ファイルは変更されません。
z/OS UNIX の大規模ファイルのサポート: AMODE 64 C/C++ アプリケーションの場合は、z/OS UNIX の大規模ファイルが自動的にサポートされます。AMODE 31 C/C++ アプリケーションは、オプション LANGLVL(LONGLONG) を指定してコンパイルされなければなりません。また、ヘッダーがインクルードされる前に _LARGE_FILES フィーチャー・テスト・マクロを定義して、2 GB のサイズより大きい z/OS UNIX ファイルをこの関数が操作できるようにしなければなりません。ファイル・サイズとオフセット・フィールドは、63 ビットの幅に拡張されます。したがって、_LARGE_FILES フィーチャー・テスト・マクロの定義も行うには、ファイルを操作する他のいずれかの関数が必要です。
正常に実行された場合、truncate() は 0 を戻します。