Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fcntl.h>
- #include <stdio.h>
- #define MAX 512
- int main(int argc, char* argv[]) {
- char buf[MAX];
- int desc_zrod, desc_cel;
- int lbajt;
- // Tablica argv[] przechowuje łańcuchy znaków podane
- // podczas wywoływania programu. argv[0] przechowuje
- // nazwę pliku za pomocą którego został wywołany program;
- // argv[1..argc] przechowują ewenetualne parametry
- if (argc<3) { // użyj standardowego wyjścia komunikatów błędów
- fprintf(stderr, "Za malo argumentow. Uzyj:\n");
- fprintf(stderr, "%s <pliki zrodlowe> ... <plik docelowy>\n", argv[0]);
- return 0;
- // utworz plik o nazwie podanej jako ostatni argument
- desc_cel = creat(argv[argc], 0640);
- if (desc_cel == -1){
- perror("Blad utworzenia pliku docelowego");
- return 0;
- }
- // otwórz plik do odczytu
- int i;
- for (i = 2;i<argc;i++) {
- // po kolei otwiera pliki które nie są ostatnimi albo
- // pierwszymi argumentami i zapisuje je do utworzonego pliku
- desc_zrod = open(argv[i], O_RDONLY);
- if (desc_zrod == -1) { // plik nie został otwarty
- // perror() powoduje wyświetlenie wiadomości na standardowym wyjściu błędów
- perror("Blad otwarcia pliku");
- return 0;
- }
- // Kopiowanie.
- while((lbajt = read(desc_zrod, buf, MAX)) > 0) {
- if (write(desc_cel, buf, lbajt) == -1){
- perror("Blad zapisu pliku docelowego");
- return 0;
- }
- }
- if (lbajt == -1) {
- perror("Blad odczytu pliku zrodlowego");
- return 0;
- }
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement