当前位置: 技术问答>linux和unix
linux 下mkfifo ,读管道,所得字符串总是乱码
来源: 互联网 发布时间:2016-07-28
本文导语: #include #include #include #include #include #define FIFO "/mnt/hgfs/ShareFiles/lab3/fifo" int main() { char *buf; int fd; unlink( FIFO ); mkfifo( FIFO, 0777 ); if ( fork() > 0 ) { char *s = "HelloWorld...
#include
#include
#include
#include
#include
#define FIFO "/mnt/hgfs/ShareFiles/lab3/fifo"
int main()
{
char *buf;
int fd;
unlink( FIFO );
mkfifo( FIFO, 0777 );
if ( fork() > 0 )
{
char *s = "HelloWorld";
fd = open( FIFO, O_WRONLY );
write( fd, s, strlen(s)+1 );
close( fd );
}
else
{
fd = open( FIFO, O_RDONLY );
read( fd, buf, sizeof(buf) );
printf(" %sn", buf );
close( fd );
}
return 0;
}
这是个在简单不过的代码 ,可是编译过后,运行就是乱码,这个怎么解决呢,望DX指教
#include
#include
#include
#include
#define FIFO "/mnt/hgfs/ShareFiles/lab3/fifo"
int main()
{
char *buf;
int fd;
unlink( FIFO );
mkfifo( FIFO, 0777 );
if ( fork() > 0 )
{
char *s = "HelloWorld";
fd = open( FIFO, O_WRONLY );
write( fd, s, strlen(s)+1 );
close( fd );
}
else
{
fd = open( FIFO, O_RDONLY );
read( fd, buf, sizeof(buf) );
printf(" %sn", buf );
close( fd );
}
return 0;
}
这是个在简单不过的代码 ,可是编译过后,运行就是乱码,这个怎么解决呢,望DX指教
|
问题出在下面的这段代码
“
else
{
fd = open( FIFO, O_RDONLY );
read( fd, buf, sizeof(buf) );
printf(" %sn", buf );
close( fd );
}
”
需要给buf分配内存,才能赋值
“
else
{
fd = open( FIFO, O_RDONLY );
read( fd, buf, sizeof(buf) );
printf(" %sn", buf );
close( fd );
}
”
需要给buf分配内存,才能赋值
|
read( fd, buf, sizeof(buf) );
----------------
buf是个野指针,你只读了4字节,填充到野指针指向的空间,是非常严重的错误
----------------
buf是个野指针,你只读了4字节,填充到野指针指向的空间,是非常严重的错误
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。