假设我希望将一些数据输入到我的系统上创建的某个网络端口并手动执行此操作。文件系统上有它的接口吗?
也许我可以写入一种特殊类型的文件?如果不是的话,这一切是如何运作的?
(尽管我提出这个问题可能听起来很荒谬,而且根本没有意义。我很乐意接受有关该主题的一些好文章的链接。)
答案1
简而言之
您无法以某种方式执行您所描述的操作,例如使用cat
写入文件并将其通过网络发送出去。然而,有一些工具可以做到这一点。我建议研究netcat
或socat
(socat 更灵活,但稍微更混乱)。两者都可能出现在您的发行版存储库中。
解释
在 Linux 中,IP 套接字存在于用户空间中,并且文件系统本身没有文件。
为了演示这一点,我运行了$ lsof -i :15115
(端口 15115 与 Skype 关联):
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
skype 3836 eightbit 43u IPv4 9020794 0t0 TCP *:15115 (LISTEN)
skype 3836 eightbit 44u IPv4 9020795 0t0 UDP *:15115
因此进程有一个为 TCP 套接字3836
编号的文件描述符(“u”仅表示文件以 r+w 权限打开)。43
15115
所以如果我这样做$ ls -l /proc/3836/fd/43 && file /proc/3836/fd/43
我会得到:
lrwx------ 1 eightbit eightbit 64 Sep 26 00:37 /proc/3836/fd/43 -> socket:[9020794]
/proc/3836/fd/43: broken symbolic link to socket:[9020794]
正如你所看到的,插座不是真的一份文件。