c语言,打开fifo文件时就没有反应,也不报错,就像是被暂停了一样,请问是怎么个情况?代码如下。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言,打开fifo文件时就没有反应,也不报错,就像是被暂停了一样,请问是怎么个情况?代码如下。相关的知识,希望对你有一定的参考价值。

#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<limits.h>#include<sys/types.h>#include<sys/stat.h>#include<string.h>#include<stdlib.h>int main() const char *fifo_name = "/tmp/my_fifo"; int pipe_fd = -1, data_fd = -1; int res = 0; const int open_mode = O_WRONLY; int bytes_sent = 0; char buffer[PIPE_BUF + 1]; if(access(fifo_name, F_OK) == -1) res = mkfifo(fifo_name, 0777); if(res != 0) fprintf(stderr, "Could not create fifo %s\n", fifo_name); exit(EXIT_FAILURE); printf("Process %d opening FIFO O_WRONLY\n", getpid()); pipe_fd = open(fifo_name, open_mode); //执行到这里就没反应了 printf("Process %d result %d\n", getpid(), pipe_fd); if(pipe_fd != -1) close(pipe_fd); else exit(EXIT_FAILURE); exit(EXIT_SUCCESS);

一直处于等待状态。。。跪求解答!!
我已经解决了。。。。来一个人,我送分。。。

你需要再写一个读的程序 一起运行。
FIFO的打开规则:
如果当前打开操作是为读而打开FIFO时,若已经有相应进程为写而打开该FIFO,则当前打开操作将成功返回;否则,可能阻塞直到有相应进程为写而打开该FIFO(当前打开操作设置了阻塞标志);或者,成功返回(当前打开操作没有设置阻塞标志)。
如果当前打开操作是为写而打开FIFO时,如果已经有相应进程为读而打开该FIFO,则当前打开操作将成功返回;否则,可能阻塞直到有相应进程为读而打开该FIFO(当前打开操作设置了阻塞标志);或者,返回ENXIO错误(当前打开操作没有设置阻塞标志)。
总之就是一句话,一旦设置了阻塞标志,调用mkfifo建立好之后,那么管道的两端读写必须分别打开,有任何一方未打开,则在调用open的时候就阻塞。
参考技术A 送我吧,谢谢本回答被提问者采纳

原!tomcat启动超时(打印了几行日志,后面没了。也不报错,处于启动状态,直到超时)

项目框架:spring+struts2+mybatis

今天优化代码,改了一堆mybatis dao和xml文件,启动项目时,就出现如标题描述的状况:打印了几行日志,后面就不打印了,也不报错,处于启动状态,直到超时。

首先检查是不是tomcat有问题,发现tomcat没有问题,后来感觉应该是项目代码问题,百度了一圈,发现也有碰到这种问题的

 

 在mybatis的Mapper配置文件里配置了两个同名的ID,但是它们参数不同,结果就出现了部署时tomcat启动不了,改了启动时间也不行。

 

后来看了dao对应的xml配置文件,我也是这种情况,改了之后,重启 ok。

以上是关于c语言,打开fifo文件时就没有反应,也不报错,就像是被暂停了一样,请问是怎么个情况?代码如下。的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中安装并配置好TOMCAT后,点击启动按钮没有任何反应,也不报错 是啥问题

原!tomcat启动超时(打印了几行日志,后面没了。也不报错,处于启动状态,直到超时)

eclipse中web项目运行了不出现页面.也不报错 服务器启动了的

oracle执行sql没得结果也不报错

我在linux 下装JDK包后,配置了变量,测试javac test.java命令不报错也不输出,怎么回事

执行hive命令时没有反应