Muss es in C sein?
Ja, also eigentlich muss es eine Systemfunktion sein, damit ich es in ein C++ Programm einbauen kann. Aber es macht eigentlich keinen Unterschied.
manfred@samurai:~$ df -T /home/melchior/ | awk 'END {print $1}'
/dev/sda2
manfred@samurai:~$ df -T /home/dakuan/ | awk 'END {print $1}'
/dev/sda2
manfred@samurai:~$ df -T /home/manfred/ | awk 'END {print $1}'
/dev/sda2
Das war es also nicht.
Da habe ich wohl aus Unwissenheit die Frage falsch formuliert, oder das eigentliche Problem noch nicht erkannt.
Wieso bekomme ich als User:manfred beim Versuch eine Datei von /home/melchior/... nach /home/manfred/test/ zu verschieben einen Fehler? Wenn das das selbe Gerät ist habe ich doch Schreibrecht auf den Ziel.
Kann es sein, dass ich den Fehler falsch interpretiert habe?
Also da stat() sagt, das es sich um das selbe Gerät handelt, hatte ich zum Verschieben die Systemfuktion rename() verwendet, die aber einen Fehler meldet.
Bei unterschiedlichen Geräten muss ich die Bytes tatsächlich kopieren, was dann auch passiert. Allerdings bekomme ich danach die Fehlermeldung, dass die Quelldatei nicht gelöscht werden konnte.
Insgesamt finde ich das ganze ziemlich verwirrend. Ich kann z.B. ohne Probleme eine schreibgeschützte Datei überschreiben, wenn ich im betreffenden Verzeichnis Schreibrecht habe. Als Programmierer kann ich das gerade noch verstehen, aber wie soll ich das dem Benutzer erklären?
Grübel