Salve a tutti. Ho scritto un programma in c per copiare i files chiamato "cp.c", sotto windows funziona egregiamente ma sotto mac (dopo aver compilato ovvio) il file scritto non appariva... perciò ho aggiunto un controllo nel programma c ed effettivamente scrive sul file ma quando viene chiuso non esiste su disco.
Ho provato anche aggiungendo "sudo" all'inizio del comando ma nulla...
Come risolvo?

Questo è il mio output:
codice:
MacBook-Pro-di-Tommaso-Ricci:C zorgatone$ ls
alunni.dat	cp.c		employee.c	file.c		read
cp		employee	file		prova.dat	read.c
MacBook-Pro-di-Tommaso-Ricci:C zorgatone$ ./cp file file2
Starting...
file->file2
Pos: 9056
Error on written file.
Error during file coping.
Closing...
MacBook-Pro-di-Tommaso-Ricci:C zorgatone$
Questo è il programma:
Codice PHP:
// cp.c

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

#define N 250

typedef unsigned char BYTE;

bool filecopia(char *filenamechar *file2);
bool canopen(char filenamechar *mode);

int main(int argcchar *argv[]) {

    if(
argc != || (argc >= && strcmp(argv[1], "--help") == 0) || (argc >= && strcmp(argv[1], "--h") == 0) || (argc >= && strcmp(argv[2], "--help") == 0) || (argc >= && strcmp(argv[2], "--h") == 0)) {
        
printf("Usage: \"%s source destination\".\n"argv[0]);
        return 
0;
    }
    if(!
canopen(argv[1], "rb")) {
        
fprintf(stderr"Cannot open file 1.\n");
        exit(
EXIT_FAILURE);
    }
    else if(!
canopen(argv[2], "wb")) {
        
fprintf(stderr"Cannot open file 2.\n");
        exit(
EXIT_FAILURE);
    }
    else {
        
printf("Starting...\n");
        
        if(
filecopia(argv[1], argv[2])) {
            
printf("Success!\n");
            return 
0;
        }
    }

    
fprintf(stderr"Error during file coping.\nClosing...\n");
    exit(
EXIT_FAILURE);

}

bool canopen(char filenamechar *mode) {

    
FILE *fp;
    if(!(
fp fopen(filenamemode))) {
        return 
false;
    }
    
fclose(fp);

    return 
true;

}

bool filecopia(char *filenamechar *file2) {
    
    
printf("%s->%s\n"filenamefile2);

    
FILE *f1 fopen(filename"rb"), *f2 fopen(file2"wb");
    
char buf1[N], buf2[N];
    
BYTE p;
    
int pos0;

    if(
canopen(file2"rb")) {
        
remove(file2);
    }
    
    if (!
f1 || !f2) {
        
fprintf(stderr"Error opening files.\n");
        
fclose(f1);
        
fclose(f2);
        return 
false;
    }

    
setvbuf(f1buf1_IOFBFN);
    
setvbuf(f2buf2_IOFBFN);

    
fseek(f10LSEEK_END);
    
pos ftell(f1);
    
printf("Pos: %d\n"pos);
    
rewind(f1);

    while(
i++<pos) {
        
fread(&p11f1);
        
fwrite(&p11f2);
    }
    
fclose(f1);
    
fclose(f2);
    
    if (!
canopen(file2"rb")) {
        
fprintf(stderr"Error on written file.\n");
        return 
false;
    }

    return 
true;