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)
我需要打印第一个语句,然后在单元等待之后,打印第二个语句.但是,当我执行它时,两个语句都打印出来,然后单元等待,第二个语句打印两次.我哪里错了?
write它不关心C字符串,它写的字符数与您指定的字符数完全相同(如果可以的话).在你的情况下,它正在阅读过去buf1的结束,这是未定义的行为.
puts如果要打印字符串,请改用.
puts(buf1);
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因必须使用write,请提供实际的字符串长度作为size参数.