linux C++ socketpair进行父子进程间通信

void begin_session(session_t *sess)
{
	activate_oobinline(sess->ctrl_fd);
	/*
	int sockfds[2];    //内部进程间通道的建立
	if (socketpair(PF_UNIX, SOCK_STREAM, 0, sockfds) < 0) //创建了一对无名的套接字描述符 和管道类似
		ERR_EXIT("socketpair");
    */

	priv_sock_init(sess);

	pid_t pid;
	pid = fork();
	if (pid < 0)
		ERR_EXIT("fork");

	if (pid == 0)//子进程
	{
		// ftp服务进程    //与外界进行交互通讯,接受客户端发送过来的命令请求
		/*
		close(sockfds[0]);
		sess->child_fd = sockfds[1];
		*/
		priv_sock_set_child_context(sess);
		handle_child(sess);
		 //设置子进程通讯套接字
	}
	else
	{
		// nobody进程    将父进程改为nobody进程, 父进程接收的是子进程发送接受的 仅仅是起到一些辅助的作用
		//内部子进程,只是起辅助作用不与外部进行通讯
		/*close(sockfds[1]);
		sess->parent_fd = sockfds[0];*/
		priv_sock_set_parent_context(sess);
		handle_parent(sess);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值