BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #39691同步于 2010/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

程序挂掉了 核心代码很短 谁帮忙看一下

lockhart
2010/11/12镜像同步17 回复
问一下这个代码为什么到注释那里就停了 代码在linux下可以运行 是关于 FIFO的 #include "unistd.h" #include "stdio.h" #include "string.h" #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <stdarg.h> #include <syslog.h> const unsigned int FILE_MODE=(S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); const char FIFO1[]="/tmp/fifo.1"; const char FIFO2[]="/tmp/fifo.2"; int main() { int readfd,writefd; if((mkfifo(FIFO1,FILE_MODE)<0)&&errno!=EEXIST) { //错误处理 无视 char buff[100]; snprintf(buff,sizeof(buff),"can't creat %s",FIFO1); perror(buff); } if((mkfifo(FIFO2,FILE_MODE)<0)&&errno!=EEXIST) { //错误处理 无视 unlink(FIFO1); char buff[100]; snprintf(buff,sizeof(buff),"can't creat %s",FIFO2); perror(buff); } printf("1\n");//到这里就停了 readfd=open(FIFO1,O_RDONLY,0); writefd=open(FIFO2,O_WRONLY,0); exit(0); }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
guozi机器人#1 · 2010/11/12
不是printf下一行停了? 【 在 lockhart (lockhart) 的大作中提到: 】 : 问一下这个代码为什么到注释那里就停了 : 代码在linux下可以运行 是关于 FIFO的 : #include "unistd.h" : ...................
lockhart机器人#2 · 2010/11/12
【 在 guozi 的大作中提到: 】 : 不是printf下一行停了? 对阿 能帮我看一下么
zxsword机器人#3 · 2010/11/12
如果有另外一个进程,以写打开命名管道FIFO1,那么readfd=open(FIFO1,O_RDONLY,0); 就会从阻塞中返回了 或者你可以设置NONBLOCK标志来调用open函数
lockhart机器人#4 · 2010/11/12
【 在 zxsword 的大作中提到: 】 : 如果有另外一个进程,以写打开命名管道FIFO1,那么readfd=open(FIFO1,O_RDONLY,0); 就会从阻塞中返回了 : 或者你可以设置NONBLOCK标志来调用open函数 哦 是不是说单进程必须设NONBLOCK 不然没办法破阻塞? 为什么这么设计呢?
zxsword机器人#5 · 2010/11/12
管道的目的是进程间通信,单进程有什么意义? 如果单进程的话,除过以非阻塞模式打开,那肯定是阻塞的。 你可以设想一下进程之间的交互 【 在 lockhart 的大作中提到: 】 : : 【 在 zxsword 的大作中提到: 】 : : 如果有另外一个进程,以写打开命名管道FIFO1,那么readfd=open(FIFO1,O_RDONLY,0); 就会从阻塞中返回了 : ...................
lockhart机器人#6 · 2010/11/12
【 在 zxsword 的大作中提到: 】 : 管道的目的是进程间通信,单进程有什么意义? : 如果单进程的话,除过以非阻塞模式打开,那肯定是阻塞的。 : 你可以设想一下进程之间的交互 哦 我只想简单试一下 fifo的用法 进程间的我试过了 谢谢啊
zxsword机器人#7 · 2010/11/12
不客气 那本书我也读过,书名就是进程间通信,肯定是多进程之间么,呵呵~~ 【 在 lockhart 的大作中提到: 】 : : 【 在 zxsword 的大作中提到: 】 : : 管道的目的是进程间通信,单进程有什么意义? : ...................
lockhart机器人#8 · 2010/11/12
【 在 zxsword 的大作中提到: 】 : 不客气 : 那本书我也读过,书名就是进程间通信,肯定是多进程之间么,呵呵~~ 再多问一句 为什么当前fifo没有已经被打开来读的话 打开来写会阻塞? 先把数据写进去不行么
zxsword机器人#9 · 2010/11/12
先把数据写进去 ……那你也可以直 接写进一个文 件,然后读这个 文件,不是么?