C 我可以把timeval作为参数传递给sleep吗?

C 我可以把timeval作为参数传递给sleep吗?,c,time,sleep,timeval,C,Time,Sleep,Timeval,我可以传递timeval结构作为sleep函数的参数吗?我想这样做,因为timeval结构可以非常精确,因为你可以控制微秒,我想睡眠一定量的微秒。我可以这样做吗?您可以这样做: struct timeval{long tv_sec;long tv_usec;}; 结构时区{int tz_minuteswest;int tz_dsttime;}; 结构timeval-tp; 结构时区tzp; int i; i=gettimeofday(&tp,&tzp); 利用它你可以实现一个延迟功能。请看 但

我可以传递timeval结构作为sleep函数的参数吗?我想这样做,因为timeval结构可以非常精确,因为你可以控制微秒,我想睡眠一定量的微秒。我可以这样做吗?

您可以这样做:

struct timeval{long tv_sec;long tv_usec;};
结构时区{int tz_minuteswest;int tz_dsttime;};
结构timeval-tp;
结构时区tzp;
int i;
i=gettimeofday(&tp,&tzp);
利用它你可以实现一个延迟功能。请看

但是,如果您想要精确的延迟,可以使用能够获得更精确延迟的函数,例如
nanosleep()

struct timespec tim,tim2;
tim.tv_sec=1;
tim.tv_nsec=100000000升//100000000纳秒=1秒
纳米睡眠(&tim,&tim2);
/*睡眠1秒后编码*/

如果你的问题真的是“我能把timeval作为参数传递给睡眠吗”,那么答案是“不行”。如果您的问题是“如何在C语言中以微秒分辨率延迟执行”,那么答案是“使用
纳秒睡眠”。请不要问XY问题。这是否回答了您的问题?大多数POSIX睡眠功能总是有噪音的,所以如果你需要非常精确的延迟量,你可能需要一个低级别的操作系统功能。即使你告诉它要睡多久,你真正告诉它的是至少要睡多久,直到它被允许醒来。操作系统/计划程序不需要在时间一过就唤醒它。