当前位置: 技术问答>linux和unix
读写不能同步问题
来源: 互联网 发布时间:2016-09-07
本文导语: 下了一个字符驱动程序http://hi.baidu.com/xu_zhisheng/blog/item/8aacd212cfda6cd9f6039e2c.html,然后用测试程序整了,可行,但是如果将其中的读操作处理成一个进程,另一侧是写动作,则进程里无法读到数据。为什么? 代码如下:...
下了一个字符驱动程序http://hi.baidu.com/xu_zhisheng/blog/item/8aacd212cfda6cd9f6039e2c.html,然后用测试程序整了,可行,但是如果将其中的读操作处理成一个进程,另一侧是写动作,则进程里无法读到数据。为什么?
代码如下:
这是写:
#include
#include
#include
#include
#include
main()
{
int logfd,wlen = 11;
char content[256]={0};
char data[256]={0};
logfd=open("/dev/syslog",O_RDWR);
sprintf(content, "write000:%dn", wlen);
write(logfd, content, 20);
close(logfd);
return;
}
这是读:
#include
#include
#include
#include
#include
#include
main()
{
int fd;
FILE * fp;
int sz=0;
char recvbuf[256]={0};
fp=fopen("/var/log/messages", "rb+");
fd=open("/dev/syslog", O_RDWR);
lseek(fd, 0,0);
while(1)
{
sz=read(fd, recvbuf, 256);
if(sz>0)
{
recvbuf[sz]='n';
fseek(fp, 0, SEEK_END);
fwrite(recvbuf,1,sz+1,fp);
}
}
close(fd);
fclose(fp);
return;
}
代码如下:
这是写:
#include
#include
#include
#include
#include
main()
{
int logfd,wlen = 11;
char content[256]={0};
char data[256]={0};
logfd=open("/dev/syslog",O_RDWR);
sprintf(content, "write000:%dn", wlen);
write(logfd, content, 20);
close(logfd);
return;
}
这是读:
#include
#include
#include
#include
#include
#include
main()
{
int fd;
FILE * fp;
int sz=0;
char recvbuf[256]={0};
fp=fopen("/var/log/messages", "rb+");
fd=open("/dev/syslog", O_RDWR);
lseek(fd, 0,0);
while(1)
{
sz=read(fd, recvbuf, 256);
if(sz>0)
{
recvbuf[sz]='n';
fseek(fp, 0, SEEK_END);
fwrite(recvbuf,1,sz+1,fp);
}
}
close(fd);
fclose(fp);
return;
}
|
rb+换成wb试试