PROBLEMA Lettura stringhe da file con system call?

federicofollini

Nuovo Utente
11
1
CPU
i7
Salve! Devo creare un programmino che legga da file il n° di operazioni da fare e le operazioni stesse e poi le faccia eseguire da diversi processi. (ES file
3
12+5
16+7
0+1)

Avevo creato in passato il codice qui sotto per passare messaggi da un processo padre al figlio, è giusto utilizzarlo anche in questo contensto? come posso fare per leggere invece che da input dal file, e soprattutto leggere riga per riga? :( Devo usare la funzione open?
(devo fare tutto tramite le system call)

Codice:
//leggo le stringhe e le metto nella coda
void produttore (int ds_coda){
    msg messaggio;
    puts("Inserisci il messaggio da inviare o QUIT per terminare.");
    do {
        scanf("%s", messaggio.mtext);
        messaggio.mtype = 1;
        
        ris = msgsnd(ds_coda, &messaggio, DIM, IPC_NOWAIT);
        if (ris == -1){
            puts("Errore nella f. msgsnd.");
            exit(1);
        }
        printf("Inviato messaggio: %s\n", messaggio.mtext);
    } while ((strcmp(messaggio.mtext, "QUIT") != 0));
    exit(0);
}
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Parliamo quindi di lettura di file testuali? Leggere file di dati grezzi («raw data») è facile: chiami la open e leggi a blocchi fino EOF. Se invece devi interpretare come testuale, devi comunque leggere i dati e cercare in essi il marcatore 0xA (newline) e lì sai che la linea finisce; sempre che parliamo di ASCII e non di codifiche più evolute come UTF-*.
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!