Witam. Mam problem z napisaniem programu w linuxie z bibliotekami linuxowymi który scala wiele plików tekstowych w jeden nowy. Ciągle program mi staje na tworzeniu pliku nowego i zwraca błąd i nie może utworzyć pliku. Piszę to wszystko na ubuntu.
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <vector>
#include <fstream>
#include <cstdlib>
#include <iostream>
#define MAX 512
using namespace std;
int main(int argc, char* argv[])
{
char buf[MAX];
int desc_cel;
int lbajt;
vector <int>zrodlo;
if (argc < 3)
{
fprintf(stderr, "Za malo argumentow. Uzyj:\n");
fprintf(stderr, "%s <plik zrodlowy> <plik zrodlowy> ... <plik docelowy>\n", argv[0]);
exit(1);
}
for(int i=1; i<=argc-2; i++)
{
zrodlo.push_back(open(argv[i], O_RDONLY));
if (zrodlo[i] == -1)
{
perror("Blad otwarcia jednego z plików zrodlowych, sprawdz poprawnosc plikow");
exit(1);
}
}
int n = zrodlo.size();
cout<<"zrodlo.size = "<<n<<endl;
desc_cel = creat(argv[n+1], 0640);
if (desc_cel == -1)
{
perror("Blad utworzenia pliku docelowego");
exit(1);
}
for(int h=0; h<=n; h++)
{
while ((lbajt = read(zrodlo[h], buf, MAX)) > 0)
{
if (write(desc_cel, buf, lbajt) == -1)
{
perror("Blad zapisu pliku docelowego");
exit(1);
}
}
}
if (lbajt == -1)
{
perror("Blad odczytu pliku zrodlowego");
exit(1);
}
for(int o=0; o<n; o++)
{
if (close(zrodlo[n]) == -1)
{
perror("Blad zamkniecia pliku");
exit(1);
}
}
if (close(desc_cel) == -1)
{
perror("Blad zamkniecia pliku");
exit(1);
}
exit(0);
}