I am waiting on other socket or keyboard input in addition to a message from a PLC. Can I use select() directly on PLCIO file descriptors?
No. In unsolicited mode, PLCIO internally manages a table of file descriptors that can grow or shrink based on the number of PLCs currently connected to your application. The API is not capable of providing you with this list of file descriptors. We recommend cycling between select() and plc_receive() in your application, with a short (30 milliseconds or less) timeout for each.