e cosa dovrei capire? hai almeno 5 funzioni non postate
non ho capito il senso del do while: a chi invii i pid e da chi li ricevi?

quando non c'è bisogno non usare le funzioni

dov'è che gestisci quanto deve aspettare la nave nel porto? nell'handler di SIGINT?
non ho provato, ma sei sicuro che il for crei un numero di processi = num_navi?