【发布时间】:2011-01-16 03:22:09
【问题描述】:
我正在尝试使用命名管道在进程内进行通信。 这是代码
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
void sigint(int num)
{
int fd = open("np", O_WRONLY);
write(fd, "y", 1);
close(fd);
}
main()
{
char ch[1];
int fd;
mkfifo("np", 0666);
signal(SIGINT, sigint);
fd = open("np", O_RDONLY);
read(fd, ch, 1);
close(fd);
printf("%c\n", ch[0]);
return;
}
我想要的是让 main 阻塞,直到将某些内容写入管道。 问题是信号处理程序 sigint() 在打开管道后也会阻塞。考虑到管道已经在 main() 中打开以供读取,这应该发生吗?
【问题讨论】:
标签: c ipc named-pipes