W jaki sposób użytkownicy zazwyczaj usuwają pliki w systemie operacyjnym Linux? Myślę o użyciu wywołania funkcji unlink
, ale zastanawiam się, czy masz lepszy pomysł, ponieważ standard C++ nie wspomina o operacji usuwania plików i zależy od systemu.Usunięcie pliku w C++ pod UNIX
Odpowiedz
Yep - standard C++ pozostawia te rzeczy systemowi operacyjnemu, więc jeśli używasz Linuksa (lub dowolnego systemu POSIX), masz tylko unlink()
.
Standard C zapewnia remove()
, który można wypróbować, ale należy pamiętać, że jego behavior is unspecified dla czegokolwiek innego niż "zwykły plik", więc tak naprawdę nie chroni przed wejściem w szczegóły systemu plików specyficzne dla platformy (linki itp.).
Jeśli chcesz czegoś wyższego poziomu, bardziej wytrzymałego i bardziej przenośnego, sprawdź Boost Filesystem.
Rozłączenie jest prawidłowym sposobem.
Standard zawiera funkcję o nazwie remove, która to robi. Chociaż wolałbym, aby to było boost.filesystem
(jeśli już i tak używam doładowania).
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
unlink()
jest określona przez normy POSIX, a więc będzie istnieć w każdym systemie zgodnym z POSIX, oraz sporo, które nie są zbyt zgodne POSIX.
Pamiętaj, że najnowsze jądra oferują także unlinkat
. Ta funkcja jest szybsza niż unlink
, jeśli posiadasz deskryptor pliku w samym katalogu.
- 1. Rozróżnianie katalogu unix i pliku w C i C++
- 2. Jak wymusić usunięcie pliku?
- 3. Otwieranie pliku w systemie Unix przy użyciu C++
- 4. Parsowanie czasu unix w C#
- 5. Unix konwersji czasu w C#
- 6. Jak wymusić usunięcie zablokowanych plików w C/C++?
- 7. Usunięcie pliku Androida nie działa
- 8. Usunięcie pliku PO instalacji w InnoSetup
- 9. Unix znajdź średni rozmiar pliku
- 10. Tworzenie nowego pliku w systemie UNIX
- 11. odwrócić pliku w systemie Unix shell
- 12. Użyj pliku INI w języku C na komputerze pod Linuksem
- 13. Usunięcie pliku z C:/ProgramData w Windows 7 tak naprawdę nie usuwa pliku?
- 14. Dołączanie zawartość pliku na początku innego pliku w systemie UNIX
- 15. Implementowanie potoków w powłoce C (Unix)
- 16. Uptime pod linuxem w C
- 17. Cofnij usunięcie w GIT
- 18. Apache: proxy do gniazda unix o nazwie pod adresem URL
- 19. Usunięcie konkretnej linii z pliku tekstowego?
- 20. Usunięcie znak nowego wiersza na końcu pliku
- 21. Błąd montażowy podczas kompilowania pliku C pod Linuksem
- 22. Lista funkcji C/C++ (Analiza kodu w systemie Unix)
- 23. Komenda Unix do sprawdzania rozmiaru pliku
- 24. Usunięcie zachowania w związku
- 25. Kopia pliku Atomic pod .NET
- 26. jak usunąć duplikaty linii w pliku tekstowym w bash unix?
- 27. Wyjście Ilość linii w pliku tekstowym na ekranie w Unix
- 28. Wysyłanie i odbieranie pliku (serwer/klient) w C przy użyciu gniazda na Unix
- 29. usunięcie pustego szarą przestrzeń w DataGrid w C#
- 30. Rury UNIX na bloku C podczas odczytu
Używam remove() w całym moim kodzie - możliwość przenoszenia jest ważna dla niektórych z nas. –
remove jest w rzeczywistości określone w POSIX, aby było równoważne rozłączeniu dla nie-katalogów. – Random832