Listing 2.2: Kopiowanie pliku (str. 7)
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 512
int main(int argc, char* argv[]){
char buf[MAX];
int desc_zrod, desc_cel;
int lbajt;
if (argc<3){
fprintf(stderr, "Za malo argumentow. Uzyj:\n");
fprintf(stderr, "%s <plik zrodlowy> <plik docelowy>\n", argv[0]);
exit(1);
}
desc_zrod = open(argv[1], O_RDONLY);
if (desc_zrod == -1){
perror("Blad otwarcia pliku zrodlowego");
exit(1);
}
desc_cel = creat(argv[2], 0640);
if (desc_cel == -1){
perror("Blad utworzenia pliku docelowego");
exit(1);
}
while((lbajt = read(desc_zrod, 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);
}
if (close(desc_zrod) == -1 || close(desc_cel) == -1){
perror("Blad zamkniecia pliku");
exit(1);
}
exit(0);
}
Listing 2.3: Wyprowadzanie rozmiaru pliku (str. 8)
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
int desc;
long rozm;
if (argc < 2){
fprintf(stderr, "Za malo argumentow. Uzyj:\n");
fprintf(stderr, "%s <nazwa pliku>\n", argv[0]);
exit(1);
}
desc = open(argv[1], O_RDONLY);
if (desc == -1){
perror("Blad otwarcia pliku");
exit(1);
}
rozm = lseek(desc, 0, SEEK_END);
if (rozm == -1){
perror("Blad w pozycjonowaniu");
exit(1);
}
printf("Rozmiar pliku %s: %ld\n", argv[1], rozm);
if (close(desc) == -1){
perror("Blad zamkniecia pliku");
exit(1);
}
exit(0);
}
Listing 2.4: Wyprowadzanie rozmiaru wielu plików (str. 9)
#include <fcntl.h>
#include <stdio.h>
int main(int argc, char* argv[]){
int desc, i;
long rozm;
if (argc < 2){
fprintf(stderr, "Za malo argumentow. Uzyj:\n");
fprintf(stderr, "%s <nazwa pliku> ...\n", argv[0]);
exit(1);
}
for (i=1; i<argc; i++) {
desc = open(argv[i], O_RDONLY);
if (desc == -1){
char s[50];
sprintf(s, "Blad otwarcia pliku %s", argv[i]);
perror(s);
continue;
}
rozm = lseek(desc, 0, SEEK_END);
if (rozm == -1){
perror ("Blad w pozycjonowaniu");
exit(1);
}
printf("Rozmiar pliku %s: %ld\n", argv[i], rozm);
if (close(desc) == -1){
perror("Blad zamkniecia pliku");
exit(1);
}
}
exit(0);
}