日期:2014-05-16  浏览次数:20697 次

c程序中的一个小问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
   
#define MAXFILE 65535
int main()
{
pid_t pc;
int i,fd,len;
char *buf="This is a Dameon\n";
len =strlen(buf);
pc=fork(); 
if(pc<0){
printf("error fork\n");
exit(1);
}else if(pc>0)
exit(0);
setsid();
chdir("/");
umask(0);
for(i=0;i<MAXFILE;i++)
close(i);
while(1){
if((fd=open("/tmp/dameon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0){
perror("open");
exit(1);
}
write(fd, buf, len+1);
close(fd);
sleep(10);
}
}

这是我今天看linux程序设计当中的一段代码,功能是:首先建立一个守护进程,然后让该守护进程每隔10s在/tmp/daemon.log中写入一句话。但是倒数第五行我有个地方看不懂,为什么是len+1呀?不知道为什么要+1,我试着没加1,程序还是能按预期运行的,这个事情我碰到很多次了,但是就是不懂它为什么要+1,希望哪位好心的高手大侠能帮小弟解决下这个问题!感激不尽!

------解决方案--------------------
字符串最后有一个字节的结束标记,为0