- 论坛徽章:
- 0
|
10可用积分
本帖最后由 kgisme170 于 2010-09-01 19:08 编辑
我在sun平台上编辑这个函数,功能流程是
1. 父进程打开一个命名管道,等待子进程;
2. 子进程写入,关闭。
3. 父进程读出,关闭。
发现父进程和子进程都不能响应,加了write打印一条消息也不行:- #include<unistd.h>
- #include<fcntl.h>
- #include<sys/types.h>
- #include<sys/stat.h>
- #include<sys/wait.h>
- int main(void){
- char FIFO[]=".myfifo";
- char msg[8]="hello!\n";
- char buf[8]={0};
- unlink(FIFO);
- mkfifo(FIFO,0666);
- pid_t pid=fork();
- int status;
- if(pid>0){//father
- write(STDOUT_FILENO,buf,sizeof(buf));//debug
- wait(&status);
- int fd=open(FIFO,O_RDONLY);
- read(fd,buf,sizeof(buf));
- write(STDOUT_FILENO,buf,sizeof(buf));
- close(fd);
- }else{//child
- write(STDOUT_FILENO,buf,sizeof(buf));//debug
- int fd=open(FIFO,O_WRONLY);
- write(fd,msg,sizeof(msg));
- close(fd);
- }
- return 0;
- }
复制代码 这是为什么? wait函数的调用方法有错么? |
|