这可能是一个新手问题,但是如果我打开并向套接字写入一些数据,那么退出子程序使套接字超出范围,然后尝试从另一个程序读取数据,稍后将数据当原始声明超出范围时,仍然存在或者它是否会死亡?
谢谢,
N.
更多的信息 :
我试图重写2个使用文件作为通信接口的程序.一般流程是:
主要流程:写入数据.
主进程:将辅助进程生成到集群中的其他节点上
主要流程:等到二级流程完成.
二次处理:读取数据(由main编写)
二次处理:写入数据
二级流程:退出
主要流程:读取数据.
所以我基本上想用套接字替换文件的写/读/写/读(这应该快得多!)
对于TCP套接字,您需要在发送数据之前打开双向连接,因此如果您没有接收方,则问题无关紧要.
对于UDP,如果在您发送数据时没有人正在侦听套接字,除非您设法以足够快的速度打开监听程序以使数据仍然在网络驱动程序内运行,否则没有人会收到它.但是不要指望它,因为驱动程序内的'localhost loopback'不应该花费超过几微秒的时间来传递数据.
PS如果您更详细地描述您的确切情况,也许您可以得到更合适的答案.你想要实现什么目标?
关于你的"进一步信息".通过简单地用套接字替换文件并保持当前方案,您无法使用套接字执行此操作.但是,您可以尝试通过首先生成子进程来更改方案,然后再通过套接字向它们发送数据.当孩子们完成后,他们通过套接字向父母回复,然后退出.
从某种意义上说,这里的效率很低,因为你必须分别向每个孩子发送相同的数据(除非你可以使用多播).
我不确定套接字会比文件快得多,但它们对于更复杂的方案肯定会更安全,并且还允许在不共享文件系统的机器之间进行分发.