当前位置: 技术问答>linux和unix
套接字是进程私有的资源吗?
来源: 互联网 发布时间:2016-05-27
本文导语: 请问各位大虾: 套接字是进程私有的资源吗?还是共有的资源,如果是共有的资源,那么假设有不相干的进程A和B; 先用A创建一个套接字1,然后把这个套接字文件描述符传送给进程B,那么进程B对该套接字文...
请问各位大虾:
套接字是进程私有的资源吗?还是共有的资源,如果是共有的资源,那么假设有不相干的进程A和B;
先用A创建一个套接字1,然后把这个套接字文件描述符传送给进程B,那么进程B对该套接字文件描述符的
操作到底是不是操作套接字1啊?
请各位大虾帮帮忙!谢谢了!
套接字是进程私有的资源吗?还是共有的资源,如果是共有的资源,那么假设有不相干的进程A和B;
先用A创建一个套接字1,然后把这个套接字文件描述符传送给进程B,那么进程B对该套接字文件描述符的
操作到底是不是操作套接字1啊?
请各位大虾帮帮忙!谢谢了!
|
套接字应该属于进程。
进程所能打开的文件句柄(包括套接字)是有限制的,当然可以设置。
进程退出后相应的套接字应该被自动关闭。
进程所能打开的文件句柄(包括套接字)是有限制的,当然可以设置。
进程退出后相应的套接字应该被自动关闭。
|
socket其实是socketfs上的一个文件,因此不是私有的。
在你的例子中,B进程对该套接字文件描述符的操作到底是操作套接字1
如果A进程先于B进程退出,也只是使套接字1的引用计数减1,内核这时不会摧毁这个套接字
在你的例子中,B进程对该套接字文件描述符的操作到底是操作套接字1
如果A进程先于B进程退出,也只是使套接字1的引用计数减1,内核这时不会摧毁这个套接字
|
不能简单的传fd,用sendmsg
http://hi.baidu.com/netred/blog/item/b461162a0216363d5343c1e5.html
http://hi.baidu.com/netred/blog/item/b461162a0216363d5343c1e5.html
|
我测试过在某个进程下打开套接字,然后关闭该进程,该套接字也关闭。
所以你要传,得像3楼说的。
所以你要传,得像3楼说的。
|
create socket创建的是一个内存文件,按理说是可以进程间共享的。
问题在于,A进程得到的只有一个文件句柄,这是属于进出内的变量,在B进程看来是没有意义的,
要想办法让B进程重新去打开这个socket文件,就能共享了。
问题在于,A进程得到的只有一个文件句柄,这是属于进出内的变量,在B进程看来是没有意义的,
要想办法让B进程重新去打开这个socket文件,就能共享了。
|
套接字,
就是文件描述符的意思.
就是文件描述符的意思.
|
直接传A进程的描述符值给B进程是没有用的,Linux提供了复制描述符的函数,要复制描述符给其他进程,其他进程才可以用那个描述符
|
二楼是说的没错!
socket有一个打开次数描述符的,当为0时才关闭的!
不是进程独享的,如fork之后,子进程也可以有用父进程的socket对像!
记得stevens先生有讲过的
socket有一个打开次数描述符的,当为0时才关闭的!
不是进程独享的,如fork之后,子进程也可以有用父进程的socket对像!
记得stevens先生有讲过的
|
很好
|
描述符是进程私有的,但描述符指向的文件表是可以共享的。
跟文件描述符一个意思。
跟文件描述符一个意思。