C中的睡眠功能

mad*_*ode 0 c sleep system-calls

我知道这是一个简单的问题,但我仍然很困难,无法弄明白.有人能帮我吗?

char buf1[] = "one second program started\n";
char buf2[] = "one second program end\n";

int main(void)
{
 write(1,buf1,100);
 sleep(1);
 write(1,buf2,100);
}
Run Code Online (Sandbox Code Playgroud)

我需要打印第一个语句,然后在单元等待之后,打印第二个语句.但是,当我执行它时,两个语句都打印出来,然后单元等待,第二个语句打印两次.我哪里错了?

mar*_*k4o 5

更改100到strlen(buf1)或strlen(buf2).


Mat*_*Mat 5

write它不关心C字符串,它写的字符数与您指定的字符数完全相同(如果可以的话).在你的情况下,它正在阅读过去buf1的结束,这是未定义的行为.

puts如果要打印字符串,请改用.

puts(buf1);
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因必须使用write,请提供实际的字符串长度作为size参数.