当前位置: 首页 >> 程序设计 >> 用socketpair实现父子进程双工通信源代码
 

用socketpair实现父子进程双工通信源代码

作者:      来源:     发表时间:2007-07-23     浏览次数:      字号:    

#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void err_sys(const char *errmsg);

int main(void)
{
        int sockfd[2];
        pid_t pid;

        if ((socketpair(AF_LOCAL, SOCK_STREAM, 0, sockfd)) == -1)
                err_sys("socketpair");

        if ((pid = fork()) == -1)
                err_sys("fork");
        else if (pid == 0) {            /* child process */
                char buf[] = "hello china", s[BUFSIZ];
                ssize_t n;

                close(sockfd[1]);

                write(sockfd[0], buf, sizeof(buf));
                if ((n = read(sockfd[0], s, sizeof(s))) == -1)
                        err_sys("read");
                write(STDOUT_FILENO, s, n);

                exit(0);
        } else if (pid > 0) {           /* parent process */
                char buf[BUFSIZ];
                ssize_t n;

                close(sockfd[0]);
                n = read(sockfd[1], buf, sizeof(buf));
                write(sockfd[1], buf, n);

                exit(0);
        }
}

void err_sys(const char *errmsg)
{
        perror(errmsg);
        exit(1);
}

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •