当前位置: 技术问答>linux和unix
关于一个管道的编程问题,请各位大侠帮忙看看!不胜感激!
来源: 互联网 发布时间:2016-03-07
本文导语: 我试图编写一个管道读写程序,代码如下: #include #include #include #include #define FIFO_SERVER "/tmp/fifoserver" int handle_client(char *); main(int argc,char **argv) { char r_buf[4096*2] ; int fd; int r_size; int ret_size; r_size=atoi(argv[...
我试图编写一个管道读写程序,代码如下:
#include
#include
#include
#include
#define FIFO_SERVER "/tmp/fifoserver"
int handle_client(char *);
main(int argc,char **argv)
{
char r_buf[4096*2] ;
int fd;
int r_size;
int ret_size;
r_size=atoi(argv[1]);
printf("requred real read bytes %dn",r_size);
memset(r_buf,0,sizeof(r_buf));
fd=open(FIFO_SERVER,O_RDONLY,0);
if ( fd == -1)
{
printf("open %s for read errorn");
exit();
}
while(1)
{
memset(r_buf,0,sizeof(r_buf));
ret_size=read(fd,r_buf,r_size);
if (ret_size ==-1)
if(errno==EAGAIN)
printf("no data avlaiblen");
printf("real read tytes %dn",ret_size);
sleep(1);
}
pause();
unlink(FIFO_SERVER);
}
在ret hat 9编译后,运行结果如下:
[wollt@wollt file2]$ nbr 1000
requred real read bytes 1000
open (null) for read error
这个宏(#define FIFO_SERVER "/tmp/fifoserver"
)我不知道是什么意思?
请问问题出在哪?谢谢了!
#include
#include
#include
#include
#define FIFO_SERVER "/tmp/fifoserver"
int handle_client(char *);
main(int argc,char **argv)
{
char r_buf[4096*2] ;
int fd;
int r_size;
int ret_size;
r_size=atoi(argv[1]);
printf("requred real read bytes %dn",r_size);
memset(r_buf,0,sizeof(r_buf));
fd=open(FIFO_SERVER,O_RDONLY,0);
if ( fd == -1)
{
printf("open %s for read errorn");
exit();
}
while(1)
{
memset(r_buf,0,sizeof(r_buf));
ret_size=read(fd,r_buf,r_size);
if (ret_size ==-1)
if(errno==EAGAIN)
printf("no data avlaiblen");
printf("real read tytes %dn",ret_size);
sleep(1);
}
pause();
unlink(FIFO_SERVER);
}
在ret hat 9编译后,运行结果如下:
[wollt@wollt file2]$ nbr 1000
requred real read bytes 1000
open (null) for read error
这个宏(#define FIFO_SERVER "/tmp/fifoserver"
)我不知道是什么意思?
请问问题出在哪?谢谢了!
|
ls -l /tmp/fifoserver
看看有没有这个文件
没有就要建立
printf("open %s for read errorn");
这句是不是有问题,
看看有没有这个文件
没有就要建立
printf("open %s for read errorn");
这句是不是有问题,
|
fd=open(FIFO_SERVER,O_RDONLY,0); 换成
fd=open(FIFO_SERVER,O_RDONLY|O_CREAT,0);
exit(); 换成exit(-1);
printf("open %s for read errorn"); 换成
printf("open for read errorn");
这个宏(#define FIFO_SERVER "/tmp/fifoserver"
)我不知道是什么意思?
这个宏定义你就把它看成简单的字符串替换就行了。在这就是定义了一个管道路径.