Linux returns ENXIO when attempting to open() a UNIX domain socket. Kernel-wise, I believe this happens in fs/inode.c [1], where a constant `no_open` function returning -ENXIO is registered as the default open() handler for inodes in inode_init_always(), and is not specialized in nit_special_inode() as it is for other types. Seen in the systemd v238 source code [2]. [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/inode.c?h=v4.16 [2]: https://github.com/systemd/systemd/blob/v238/src/core/execute.c#L412 --- man2/open.2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/man2/open.2 b/man2/open.2 index eea14f195..0c70e2b14 100644 --- a/man2/open.2 +++ b/man2/open.2 @@ -1112,6 +1112,9 @@ no process has the FIFO open for reading. .B ENXIO The file is a device special file and no corresponding device exists. .TP +.B ENXIO +The file is a socket. +.TP .BR EOPNOTSUPP The filesystem containing .I pathname -- 2.17.0 -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html