Mar 16 Luglio, 00:15:27 - 2019

Autore Topic: P8-E2  (Letto 179 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline 6ninjak

  • Studente
  • *
  • Post: 12
  • FeedBack: +5/-0
    • Mostra profilo
P8-E2
« il: Mar 07 Maggio, 23:36:05 - 2019 »
Codice: [Seleziona]
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include "e2.h"


int make_rnd_file(unsigned size, unsigned seed, unsigned mod, char *filename) {
    srand(seed);
    int magic = MAGIC_NUMBER, i, next_int;
    ssize_t res;

    int fd = open(filename, O_WRONLY);
    check_perror(fd, "Errore nella open");

    res = write(fd, &magic, sizeof(magic));
    check_perror(res, "Errore nella write");

    res = write(fd, &size, sizeof(size));
    check_perror(res, "Errore nella write");

    for (i = 0; i < size; i++) {
        next_int = rand() % mod;
        res = write(fd, &next_int, sizeof(next_int));
        check_perror(res, "Errore nella write");
    }

    return EXIT_SUCCESS;
}

Offline cicco

  • Studente
  • *
  • Post: 5
  • FeedBack: +1/-0
    • Mostra profilo
Re:P8-E2
« Risposta #1 il: Mer 08 Maggio, 16:49:26 - 2019 »
Manca la close() e l'assegnazione dei permessi nella open (parametro mode).
Per il resto è corretto.

Offline 6ninjak

  • Studente
  • *
  • Post: 12
  • FeedBack: +5/-0
    • Mostra profilo
Re:P8-E2
« Risposta #2 il: Dom 19 Maggio, 11:51:38 - 2019 »
coś dovrebbe essere giusto
Codice: [Seleziona]
int make_rnd_file(unsigned size, unsigned seed, unsigned mod, char *filename) {
    srand(seed);
    int magic = MAGIC_NUMBER, i, next_int;
    ssize_t res;

    int fd = open(filename, O_WRONLY, S_IWUSR);
    check_perror(fd, "Errore nella open");

    res = write(fd, &magic, sizeof(magic));
    check_perror(res, "Errore nella write");

    res = write(fd, &size, sizeof(size));
    check_perror(res, "Errore nella write");

    for (i = 0; i < size; i++) {
        next_int = rand() % mod;
        res = write(fd, &next_int, sizeof(next_int));
        check_perror(res, "Errore nella write");
    }

    fd = close(fd);
    check_perror(fd, "Errore nella close");
    return EXIT_SUCCESS;
}