... trovata ... l'errore che stai facendo è considerare che ritorna un int o un long int per rappresentare un numero ...
Se ti studi il metodo read() vede che : Returns the first byte of incoming data available (or -1 if no data is available) quindi, nella tua while, tu stai stampando CARATTERE a CARATTERE quello che la "echo | cut -d. -f1 /proc/uptime" ti ha ritornato e NON un numero !!!
Per avere un numero dovresti mettere quei caratteri in un char array e convertire poi la stringa ottenuta in un long integer su cui puoi lavorare !
Guglielmo