当前位置: 技术问答>linux和unix
Unix域套接字问题
来源: 互联网 发布时间:2016-02-20
本文导语: 下面的代码是我从Linux网络编程的Unix域套接字一章中看到的 注释是我对代码的理解,问号的部分是我不懂的地方,请大家执教 int unix_fd[2]; pid_t chld_pid; socketpair(AF_UNIX,SOCK_STREAM,0,unix_fd); //创建一个unix域套接字对 chld_pid=fork();...
下面的代码是我从Linux网络编程的Unix域套接字一章中看到的
注释是我对代码的理解,问号的部分是我不懂的地方,请大家执教
int unix_fd[2];
pid_t chld_pid;
socketpair(AF_UNIX,SOCK_STREAM,0,unix_fd); //创建一个unix域套接字对
chld_pid=fork();
switch(chld_pid)
{
case -1:
perror("fork child error");
exit(1);
case 0: //子进程的操作
close(0); //关闭标准输入
close(1); //关闭标准输出
dup(unix_fd[1]); //???有什么作用呢(我知道这是文件描述符的复制,问题是用在这里做什么?)
dup(unix_fd[1]); //???有什么作用呢
close(unix_fd[0]); //关闭从父进程中继承的unix套接对的一端fd[0]
close(unix_fd[0]); //???怎么又关闭一次呢
echo_service(); //做一些服务
exit(0);
default: //父进程的操作
close(unix_fd[1]); //父进程的unix套接对的一端fd[1]
break;
}
|
int unix_fd[2];
pid_t chld_pid;
socketpair(AF_UNIX,SOCK_STREAM,0,unix_fd);//创建一个unix域套接字对
chld_pid=fork();
switch(chld_pid)
{
case -1:
perror("fork child error");
exit(1);
case 0: //子进程的操作
close(0); //关闭标准输入
close(1); //关闭标准输出
dup(unix_fd[1]); //???有什么作用呢(我知道这是文件描述符的复制,问题是用在这里做什么?)
dup(unix_fd[1]); // --- dup 会复制到最小的描述符号,也就是前面的已经关闭的0,1
// 这时标准输入/输出对应的都是套接字了。
close(unix_fd[0]); //关闭从父进程中继承的unix套接对的一端fd[0]
close(unix_fd[0]); //???怎么又关闭一次呢 --- 好像应该是close(unix_fd[1]),已经dup了,
echo_service(); //做一些服务
exit(0);
default: //父进程的操作
close(unix_fd[1]); //父进程的unix套接对的一端fd[1]
break;
}
pid_t chld_pid;
socketpair(AF_UNIX,SOCK_STREAM,0,unix_fd);//创建一个unix域套接字对
chld_pid=fork();
switch(chld_pid)
{
case -1:
perror("fork child error");
exit(1);
case 0: //子进程的操作
close(0); //关闭标准输入
close(1); //关闭标准输出
dup(unix_fd[1]); //???有什么作用呢(我知道这是文件描述符的复制,问题是用在这里做什么?)
dup(unix_fd[1]); // --- dup 会复制到最小的描述符号,也就是前面的已经关闭的0,1
// 这时标准输入/输出对应的都是套接字了。
close(unix_fd[0]); //关闭从父进程中继承的unix套接对的一端fd[0]
close(unix_fd[0]); //???怎么又关闭一次呢 --- 好像应该是close(unix_fd[1]),已经dup了,
echo_service(); //做一些服务
exit(0);
default: //父进程的操作
close(unix_fd[1]); //父进程的unix套接对的一端fd[1]
break;
}