C中的睡眠功能

时间:2012-01-21 08:47:21

标签: 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);
}

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

2 个答案:

答案 0 :(得分:5)

100更改为strlen(buf1)strlen(buf2)

答案 1 :(得分:5)

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

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

puts(buf1);

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