как создать системный вызов на C++, который копирует один файл в другие файлы?системный вызов для копирования файлов
ответ
Существует еще нет файловой системы библиотеки в стандартной библиотеке C++, так что у вас есть несколько вариантов:
- использование конкретной платформы API: вы будете использовать не портативную функции, специфичные для вашей операционной системы, но что будет делать то, что вы хотите;
- использовать (кросс-платформенную) библиотеку: хорошая библиотека boost :: filesystem, но я не уверен, что она позволяет перемещать/копировать файлы, просто проверьте функции в документе;
- использовать std :: system() для вызова команд командной строки, специфичных для ОС: std :: system («copy fileA.txt fileB.txt» или подобное должно работать на окнах, это зависит от платформы и может быть опасным с точки зрения безопасности, но это работает.
Этот код копирует файл в C. Вы можете изменить его, чтобы скопировать несколько файлов.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *from, *to; char ch; if(argc!=3) { printf("Usage: copy \n"); exit(1); } /* open source file */ if((from = fopen(argv[1], "rb"))==NULL) { printf("Cannot open source file.\n"); exit(1); } /* open destination file */ if((to = fopen(argv[2], "wb"))==NULL) { printf("Cannot open destination file.\n"); exit(1); } /* copy the file */ while(!feof(from)) { ch = fgetc(from); if(ferror(from)) { printf("Error reading source file.\n"); exit(1); } if(!feof(from)) fputc(ch, to); if(ferror(to)) { printf("Error writing destination file.\n"); exit(1); } } if(fclose(from)==EOF) { printf("Error closing source file.\n"); exit(1); } if(fclose(to)==EOF) { printf("Error closing destination file.\n"); exit(1); } return 0; }
Blatently украденную из source
Этот пример - прекрасная причина, почему вы должны писать в C++, а не C. Версия C++ - это всего лишь несколько строк. –
@Martin: Тогда напишите, как вы это сделаете. – icktoofay
Вы можете использовать функцию std::system
#include <cstdlib>
...
std::system("cp from.txt to.txt");
быть Точную с помощью функции «системы», это как копирование файла из окна DOS, вы, в основном, минуя Windows.
Вы предполагаете, что это в Windows. ОП не указывал. –
Это может быть команда DOS, но все еще проходит через уровень ОС. –
Joe White - Правда, это будет зависеть от того, как интерфейс командной строки работал на этой платформе, но тот же код, вероятно, не будет переносимым, поскольку команда, вероятно, будет отличаться. Martin York - Правда, но с помощью командной строки DOS иногда возникают проблемы, особенно с удалением, поскольку вы не получаете поддержку корзины. Во всяком случае, я бы рассмотрел использование «системы», чтобы быть взломом, поэтому я бы избегал этого вообще, просто мое мнение. – DevinEllingson
- 1. Прочитайте системный вызов текстовых файлов
- 2. системный вызов памяти с отображением файлов - linux
- 3. Системный вызов типа scandir()
- 4. getdents() Системный вызов
- 5. Использование Linux C выберите системный вызов для мониторинга файлов
- 6. Что такое системный вызов Linux для изменения флагов файлов?
- 7. Go окна системный вызов вызов
- 8. Как использовать системный вызов
- 9. C++ был выполнен системный вызов
- 10. C - Системный вызов Execl
- 11. Системный вызов open() разрешений
- 12. Труба() Системный вызов
- 13. Когда записывается системный вызов?
- 14. открытый системный вызов - Linux
- 15. трубный системный вызов
- 16. Системный вызов в процессе
- 17. Системный вызов печати INT
- 18. awk системный вызов
- 19. bash Прерванный системный вызов
- 20. Неисправный системный вызов execvp()
- 21. AppleScript для копирования файлов
- 22. системный вызов в питона
- 23. Системный вызов open()
- 24. Открытый системный вызов
- 25. выберите прерванный системный вызов
- 26. Системный вызов вилка()
- 27. Системный вызов stat() блокируется
- 28. Is getaddrinfo() системный вызов?
- 29. Прерванный системный вызов
- 30. Системный вызов Linux
У C++ сам нет системных вызовов, вы имеете в виду, как добавить системный вызов к вашей ОС для этого? или как на самом деле сделать вызов для этого. –
Это должно быть так, мне нравится писать код на C++, указав, что нужно скопировать файл из другого адресата, да, это было бы так, добавив системный вызов в мою ОС и как сделать вызов для этого. – RedKing
хорошо, мой вопрос не был да или нет. Но в любом случае, чтобы даже начать обсуждение системных вызовов, вам нужно сообщить нам, какую ОС вы используете. Во-вторых, в зависимости от вашей ОС вам может потребоваться работать исключительно на C, чтобы ** создать ** новые системные вызовы (например, linux). –