下面的tim.tv_sectim.tv_nsec有什么用处?

我怎样才能睡眠500000微秒?

#include <stdio.h>
#include <time.h>

int main()
{
   struct timespec tim, tim2;
   tim.tv_sec = 1;
   tim.tv_nsec = 500;

   if(nanosleep(&tim , &tim2) < 0 )   
   {
      printf("Nano sleep system call failed \n");
      return -1;
   }

   printf("Nano sleep successfull \n");

   return 0;
}

推荐答案

半秒等于500,000,000纳秒,因此您的代码应为:

tim.tv_sec  = 0;
tim.tv_nsec = 500000000L;

就目前情况而言,您的代码需要睡眠1.0000005s(1s+500ns).

C++相关问答推荐

为什么在传输 Big Data 时共享内存段的运行时间比管道更长?

C中的ATONE会扰乱SEN/CLUTE GMS应用程序中的其他字符串

为什么信号量为空= 0,而不是阻塞?

警告:C++中数组下标的类型为‘char’[-Wchar-subpts]

使用GOTO从多个嵌套循环C继续

初始变量重置后,char[]的赋值将消失

如何在ASM中访问C struct 成员

将 struct 传递给函数

RawMotion的XInput2错误(具有较高值的XISelectEvents上的BadValue)

变量的作用域是否在C中的循环未定义行为或实现定义行为的参数中初始化?

C语言中MPI发送接收字符串时出现的分段错误

如何对现有的双向循环链表进行排序?

生产者消费者计数器意外输出的C代码

为什么我的旧式&q;函数在传递浮点数时会打印2?

为什么我在我的代码中得到错误和退出代码-1073741819(0xC0000005),但如果我添加了一个不相关的打印语句,它仍然有效?

未为同一文件中的函数执行DirectFunctionCall

将指针的地址加载到寄存器内联拇指组件中

在 C 中传递参数时出现整数溢出

使用共享变量同步多线程 C 中的函数

在带中断的循环缓冲区中使用 易失性