【发布时间】:2021-03-23 19:03:20
【问题描述】:
这是我的程序代码:
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/types.h>
void function() {
srand(time(NULL));
while(1) {
int n = rand();
printf("%d ", n);
//sleep(1);
}
}
int main() {
pid_t pid;
pid = fork();
if (pid == 0) {
function();
}
}
注释掉 sleep 行(如上面的代码),程序运行良好(即它打印一堆随机数太快,甚至看不到它们是否真的是随机的),但如果我删除注释,程序不会' 不打印任何内容并退出(甚至不是第一次,在它进入睡眠状态之前),即使它编译时没有警告或错误,有或没有注释。
【问题讨论】:
-
如果您甚至不包含所需的标头,这肯定不会在没有警告的情况下编译。您必须提供minimal reproducible example 才能使您的问题成为主题。作为新用户,也可以使用tour 并阅读How to Ask。
-
@UlrichEckhardt 除了标题之外,我认为这是一个很好的初学者问题。
-
@UlrichEckhardt 我按照建议添加了标题
-
@BasileStarynkevitch 感谢您提供有关 POSIX 的其他信息,我使用的是 Ubuntu,将 fflush 添加到我的代码中修复了它