When the power goes out, the UPS continues to power the PC and signals that the power went out by throwing a relay or turning on an opticoupler on it's control port.
The cable is designed so that when the UPS throws said relay, this causes a particular serial port control line (typically DCD) to go high.
Powerd monitors the serial port. Keeps raised/lowered
whatever serial port control lines the UPS needs to have
raised/lowered (typically, DTR must be kept high and whatever line
shuts off the UPS must be kept low). When powerd sees the UPS control
line go high, it writes FAIL to /etc/powerfail and
sends the
initd process a SIGPWR signal. When the control line goes low
again, it writes OK to /etc/powerfail and sends initd
a SIGPWR signal.
When it receives a SIGPWR, it looks at /etc/powerfail.
If it contains FAIL it runs the powerfail entry from
/etc/inittab. If it contains OK it runs the
powerokwait entry from inittab.