The solution is to have the dialler program open the dial line with O_EXCL, which will return an error if a getty or login still has the line open. If you have signalled init, it is about to hangup the line anyway, so uucico just needs to wait until its exclusive open returns.