一个写管道程序问题
我首先mkfifo -m 666 fifo1创建了个管道,然后执行下面程序,然而程序就输出 I am *****就没死过去了,好像是管道打开有问题,请教下为什么会出现这种情况,谢谢了!
#include <stdio.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <limits.h>
#include <unistd.h>
#include <time.h>
#define BUFSZ PIPE_BUF
int main(void)
{
int fd;
int n, i;
char buf[BUFSZ];
time_t tp;
printf("I am %d\n",getpid());
if((fd = open("fifo1", O_WRONLY)) < 0)
{
perror("fail to open");
exit(1);
}
for(i = 0; i < 10; i ++)
{
time(&tp);
n = sprintf(buf, "write_fifo %d sends %s", getpid(), ctime(&tp));
printf("Send msg:%s\n", buf);
if((write(fd, buf, n+1)) < 0)
{
perror("write");
close(fd);
exit(1);
}
sleep(3);
}
close(fd);
exit(0);
}