Simple as this question is, I haven't found anything about it by Googling. Is it safe to make concurrent calls to the Linux system, such as calling
Is it safe to make concurrent calls to the Linux system, such as calling socket() on several threads at (what might be) the same time?
Yes, they are thread safe. Though I am not sure its just as per the POSIX standard or not.
Specifically, does the kernel guarantee thread-safety for socket(), connect(), and/or send()?
As per THIS link, yes. It says that locks are used internally, which would mean that your
send operation would be serialized, but not in any specific order.
Answer to updated part of the question:
My main concern here is really that socket() will not return a duplicate or invalid file descriptor when called from different threads.
No worries here. OS will make sure that the file descriptors for the socket are not duplicated.