Voglio impostare la scadenza predefinita per il ping in alcuni file di impostazioni o giù di lì. Il mio programma si blocca quando si tenta di connettersi a un indirizzo IP senza ping.
Nel terminale posso chiamare "ping 123.0.0.1 -w 5" e non durerà per sempre, ma non posso impostare alcuna scadenza nel codice.
risposte:
3 per risposta № 1Shell Shell:
Nel tuo .bashrc
aggiungere il seguente:
function ping {
/bin/ping $@ -w5
}
Ciò creerà una funzione wrapper, che imposterà il timeout su 5 secondi per tutte le chiamate ping
Nota: la versione precedente sovrascriverà a -w
param usato nella riga di comando. Se si desidera comunque essere in grado di sovrascrivere il timeout predefinito tramite la riga di comando anziché posizionare il -w5
prima di $@
:
function ping {
/bin/ping -w5 $@
}
Soluzione C pura:
Non darò un esempio completo qui per brevità. Potresti trovarne uno Qui per esempio. Nell'esempio dato, dovrai sostituire il recvfrom()
chiamata che legge la risposta ICMP e può essere bloccata da a select()
o poll()
chiamare con un timeout.