我的程序卡在了简单的调用usleep(1.);
中。怎么可能?我应该注意什么?
编辑:
为了让事情变得更加混乱,只有在我之前调用 rand() 时它才会卡住:
rand();
usleep(1.);
两个单独的电话都很好。
编辑2:
这是一个有效的最小示例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
printf("Calling rand() and then usleep(1) on pid %d \n",getpid());
rand();
usleep(1);
printf("Finished.\n");
return 0;
}
这也有效:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
printf("Calling usleep(1.) on pid %d \n",getpid());
usleep(1.);
printf("Finished.\n");
return 0;
}
但是,这个没有:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
printf("Calling rand() and then usleep(1.) on pid %d \n",getpid());
rand();
usleep(1.);
printf("Finished.\n");
return 0;
}
我使用 gcc 版本 4.4.6 编译这些命令gcc -std=c99 main.c
。选项-std=c99
有问题吗?但我仍然不明白这里发生了什么。