5

open()私がファイルを作成するときはいつでもPython、最終アクセス時刻が更新されません。これは非常に奇妙なことです。

r/rbファイルを統計した場合、何も変更せずに開いた場合

またはで開いた場合w/r+、ctimeとmtimeは正しく更新されますが、更新されませんatime

ファイルをタッチまたはキャットすると正しく更新されるため、ファイルシステムの問題(この場合はext3)のようには見えません。

私はそれについて多くの情報を見つけることができませんでした。このように動作するはずですか、それとも何か問題がありますか?

4

1 に答える 1

1

を実行してみて、マウントされた fs でフラグが使用されているmountかどうかを確認してください。noatimeまた、カーネルが十分に新しい場合、デフォルトで設定されているのは「相対時間」です。

「open()」コードは一目瞭然で、ATIME フラグをいじることはありません。

/* >> fileutils.c from Python 3.2.3 */

FILE*
_Py_fopen(PyObject *path, const char *mode)
{
#ifdef MS_WINDOWS
    wchar_t wmode[10];
    int usize;

    usize = MultiByteToWideChar(CP_ACP, 0, mode, -1, wmode, sizeof(wmode));
    if (usize == 0)
        return NULL;

    return _wfopen(PyUnicode_AS_UNICODE(path), wmode);
#else
    FILE *f;
    PyObject *bytes = PyUnicode_EncodeFSDefault(path);
    if (bytes == NULL)
        return NULL;

    /* >> Plain fopen(), nothing fancy here. */
    f = fopen(PyBytes_AS_STRING(bytes), mode);
    Py_DECREF(bytes);
    return f;
#endif
}
于 2012-05-31T07:46:12.353 に答える