2

時間パラメータが指定されたときにファイルにデータを書き込みたい: たとえば、 x= 7 を取得します -> 次の 7 秒間、ランダムなデータをファイルに書き込むことを意味します。 ) と struct timeval が機能しませんでした

私が試したこと:

struct timeval start, end;
gettimeofday(&start, 0);
while(  gettimeofday(&end, 0) && end.tv_sec - start.tv_sec < sec )
  {
    write....
  }

しかし、それは時計を止めます..

助けていただければ幸いです。ありがとう

4

3 に答える 3

7

getTimeOfDay成功すると 0 が返され、条件whileは失敗します。試す:

while(  (gettimeofday(&end, 0) == 0) && end.tv_sec - start.tv_sec < sec )
{
    write....
}
于 2013-03-03T18:52:00.483 に答える
1

操作の順序を考慮してください...のオペランドの周りに括弧を追加してみてください&&

男: gettimeofday()

RETURN VALUE
    The `gettimeofday()` function shall return 0 and 
    no value shall be reserved to indicate an error.

gettimeofday() は成功時にループが壊れている間に 0 を返すため、あなたのコードでは。

!以下のコードは、論理 Not 演算子で修正されています。

while(  (!gettimeofday(&end, 0)) && end.tv_sec - start.tv_sec < sec )
  {
    write....
  }
于 2013-03-03T18:50:07.160 に答える
0

によって廃止されたと主張されているものclock_gettimeの代わりに使用することを検討する必要があります。gettimeofdayPOSIX.1-2008

#include <time.h>

int main()
{
    struct timespec start, end;
    int sec = 10; // Number of seconds

    clock_gettime(CLOCK_REALTIME, &start);
    while( !clock_gettime(CLOCK_REALTIME, &end)
           && end.tv_sec - start.tv_sec < sec )
    {
        // Write ...
    }
}

注:プログラムを使用gccまたはコンパイルしている場合は、次のコマンドを追加g++してライブラリにリンクする必要があります。librt-lrt

gcc myprogram.c -o myprogram -lrt
于 2013-03-03T19:37:19.190 に答える