0

で使用するためstruct timespecに変換する必要があるオブジェクトがあります。struct timevallutimes(...)

私は次のことを試みましたが、lutimes()文句を言います。

const struct timespec ts; // originally provided as function parameter from FUSE
struct timeval tv;
tv.tv_sec = ts.tv_sec;
tv.tv_usec = ts.tv_nsec / 1000;
lutimes(path, tv); // returns -1; errno=EINVAL

EINVALfromlutimesは、usec コンポーネントが の外部にあることを意味します。0 <= tv_usec < 1000000つまり、 からの変換が失敗したことを意味しtimespecます。[ソース]

timespecからに適切に変換するにはどうすればよいtimevalですか?


コマンドを使用してより徹底的にデバッグすると、特定の日付が指定されておらず、現在の時刻を使用する必要がある場合にとが含まれtouchていることがわかります。timespectv_sec = 0tv_nsec > 1000000000

どうしてこれなの?これを処理する適切な方法は何ですか?

4

1 に答える 1