当前位置: 技术问答>linux和unix
命名管道问题,请求帮助.
来源: 互联网 发布时间:2015-01-04
本文导语: 我做了两个执行文件,一个在后台运行,读取管道信息并显示,一个发送信息给管道,可是后台运行的程序不能得到并显示信息.为什么?代码如下: 后台读管道程序: int mian() { FILE *fp; umask(0); char szBuffer[81]...
我做了两个执行文件,一个在后台运行,读取管道信息并显示,一个发送信息给管道,可是后台运行的程序不能得到并显示信息.为什么?代码如下:
后台读管道程序:
int mian()
{
FILE *fp;
umask(0);
char szBuffer[81];
mknod("/tmp/MYFIFO",S_IFIFO|0666,0);
while(1)
{
fp=fopen("/tmp/MYFIFO","r");
memset(szBuffer,0,81);
fgets(szBuffer,80,fp);
printf("%sn",szBuffer);
fclose(fp);
}
return 1;
}
编译正常,并后台执行
$./yrj&
客户端程序:
int main()
{
FILE *fp=fopen("/tmp/MYFIFO","w");
fputs("yrjn",fp);
fclose(fp);
}
为什么后台程序不能输出,谢谢.
后台读管道程序:
int mian()
{
FILE *fp;
umask(0);
char szBuffer[81];
mknod("/tmp/MYFIFO",S_IFIFO|0666,0);
while(1)
{
fp=fopen("/tmp/MYFIFO","r");
memset(szBuffer,0,81);
fgets(szBuffer,80,fp);
printf("%sn",szBuffer);
fclose(fp);
}
return 1;
}
编译正常,并后台执行
$./yrj&
客户端程序:
int main()
{
FILE *fp=fopen("/tmp/MYFIFO","w");
fputs("yrjn",fp);
fclose(fp);
}
为什么后台程序不能输出,谢谢.
|
不好意思,上面落掉一点:
fp=fopen("/tmp/MYFIFO","r+");
fp=fopen("/tmp/MYFIFO","w+");
现如下:
我在sco unix运行没有问题呀:
server.c:
#include "stdio.h"
#include
#include
int main()
{
FILE *fp;
char szBuffer[81];
umask(0);
mknod("/tmp/MYFIFO",S_IFIFO|0666,0);
while(1)
{
fp=fopen("/tmp/MYFIFO","r+");
memset(szBuffer,0,81);
fgets(szBuffer,80,fp);
printf("%sn",szBuffer);
fclose(fp);
}
return 1;
}
client.c :
#include "stdio.h"
int main()
{
FILE *fp=fopen("/tmp/MYFIFO","w+");
fputs("yrjn",fp);
fclose(fp);
}
运行server &
在运行client
看到结果:yrj
fp=fopen("/tmp/MYFIFO","r+");
fp=fopen("/tmp/MYFIFO","w+");
现如下:
我在sco unix运行没有问题呀:
server.c:
#include "stdio.h"
#include
#include
int main()
{
FILE *fp;
char szBuffer[81];
umask(0);
mknod("/tmp/MYFIFO",S_IFIFO|0666,0);
while(1)
{
fp=fopen("/tmp/MYFIFO","r+");
memset(szBuffer,0,81);
fgets(szBuffer,80,fp);
printf("%sn",szBuffer);
fclose(fp);
}
return 1;
}
client.c :
#include "stdio.h"
int main()
{
FILE *fp=fopen("/tmp/MYFIFO","w+");
fputs("yrjn",fp);
fclose(fp);
}
运行server &
在运行client
看到结果:yrj