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);
}
}
linux C++ socketpair进行父子进程间通信
最新推荐文章于 2024-03-25 15:29:58 发布