Bueno, se ve que nunca has hecho nada en C, por eso comprendo tu desentendimiento
Un programa en C, que atiende un puerto en especial, puede
1) no estar corriendo y ser agregado al inetd.conf (please, que algun linuxero me corrija si existe esto pero para Unix). De esa manera, cada vez que alguien se quiera conectar al puerto XXX, el superdemonio llama al programa en C y le pasa la conexion. ( es como una telefonista ).
2) Estar constantemente corriendo y esperando conexiones. Cuando recibe una, hará un fork o lanzará un thread, para atender la conexion, mientras el programa principal seguirá atendiendo nuevas conexiones.
Entonces, la respuesta es : puede tanto estar detenido o corriendo. Tal como tu prefieras configurarlo.
Saludos.