|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
[C] in cerca di una spiegazione
Vorrei capire perché questo funziona:
Codice:
struct flock *f1 = malloc(sizeof(struct flock));
if (f1 == NULL) {
fprintf(stderr, "Memory allocation error\n");
exit(EXIT_FAILURE);
}
if (fcntl(to_vmemd, F_GETLK, f1) < 0 || f1->l_type == F_UNLCK)
continue;
Codice:
struct flock f1; if (fcntl(to_vmemd, F_GETLK, &f1) < 0 || f1.l_type == F_UNLCK) continue; |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
nel secondo esempio, sono allocati tutti gli spazi corrispondenti alla struttura ?
(nel suo interno ci sono puntatori ad aree non definite ?) |
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
Quote:
Comunque se dico che le altre parti di codice sono abbastanza indipendenti è perché la named pipe su cui acquisisco il lock rimane aperta, e infatti tutto funziona correttamente allocando dinamicamente. Il mistero, almeno, è un mistero per me, è perché allocando staticamente non funziona e dinamicamente sì. C'è qualcosa che mi sfugge? @lupoxxx87: non so cosa intendi, forse se ci sono puntatori nella struct i cui campi devono essere riempiti opportunamente? In caso, la definizione della struct flock è quella di fcntl.h: Codice:
struct flock {
short int l_type;
short int l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:58.




















