How does software detect if an interrupt has occurred if it cannot set it's own interrupt handlers?
The interrupt handler adds the new data to an input queue.  Typically the user level process will have a thread waiting for input to appear, or will poll periodically to see if new input is available.  If your process does neither, it would never notice the new data.