这是代码段
这是出现的错误,提示FIFO_SERVER没有定义
请求帮助!!!
这是代码段
这是出现的错误,提示FIFO_SERVER没有定义
请求帮助!!!
open函数 摘自linux程序设计第三章
FIFO 摘自linux程序设计第十三章
你这一段代码应该是在别的地方有FIFO_SERVER(FIFO文件的路径)的定义
------补充
就你这边的代码看你如果#define FIFO_SERVER "/tmp/myfifo" 在这个目录下你有一个myfifo 的管道文件
错误原因是core dump 应该是你在这个地方没有这个文件吧.
现在上面的问题解决了,但是没有出现预期的结果
#include<sys/types.h>
#include<sys/stat.h>
#include<errno.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define FIFO "/tmp/myfifo"
main(int argc, char** argv)
{
int fd;
char w_buf[100];
int nwrite;
if (fd == -1)
if (errno == ENXIO)
printf("open errop;no reading process\n");
fd = open(FIFO_SERVER, O_WRONLY | O_NONBLOCK,0);
if (argc == 1)
printf("please send somenthing\n");
strcpy(w_buf, argv[1]);
if ((nwrite = write(fd, w_buf, 100)) == -1)
{
if (errno == EAGAIN)
printf("the fifo has not been read yet.Please try later\n");
}
else
printf("write %s to the fifo\n", w_buf);
}
这是完整的代码?不知道哪里出现了错误
在打开终端进行读操作的时候显示
下面是读的代码:
#include<sys/types.h>
#include<sys/stat.h>
#include<errno.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define FIFO_SERVER "/tmp/myfifo"
main(int argc, char** argv) {
char buf_r[100];
int fd;
int nread;
if ((mkfifo(FIFO_SERVER, O_CREAT | O_EXCL) < 0) && (errno != EEXIST))
printf("can not creat fifoserver\n");
printf("preparing for reading bytes...\n");
memset(buf_r, 0, sizeof(buf_r));
fd = open(FIFO_SERVER, O_RDONLY | O_NONBLOCK, 0);
if (fd == -1) {
perror("open");
exit(1);
}
while (1)
{
memset(buf_r, 0, sizeof(buf_r));
if ((nread = read(fd, buf_r, 100)) == -1) {
if (errno == EAGAIN)
printf("no data yet\n");
}
printf("read %s from FIFO\n", buf_r);
sleep(1);
}
pause();
unlink(FIFO_SERVER);
}
这是一个终端执行第一段代码,写没有错误提示
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
因为系统默认的fifo权限是000, 所以你需要先修改权限再open
完整的代码如下
read
write
运行
先运行reader, 再运行writer
reader
writer