System call

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
doping
Linux 1.x
Linux 1.x
Messaggi: 128
Iscritto il: mer 1 feb 2006, 23:23

System call

Messaggio da doping »

Ho il seguente problema:
ciro@w7j:~/Desktop$ gcc -o esercizio.out Exercise-1.c
Exercise-1.c: In function 'main':
Exercise-1.c:20: error: 'S_IRUSR' undeclared (first use in this function)
Exercise-1.c:20: error: (Each undeclared identifier is reported only once
Exercise-1.c:20: error: for each function it appears in.)
Exercise-1.c:20: error: 'S_IWUSR' undeclared (first use in this function)
Exercise-1.c:20: error: 'S_IRGRP' undeclared (first use in this function)
Exercise-1.c:20: error: 'S_IROTH' undeclared (first use in this function)
Sono i miei primi passi nella programmazzione linux in C!però non capisco perchè quelle costanti non le riconosce..manca qualche libreria per caso??ecco il sorgente nella sua parte iniziale:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

int main(void)
{

int fd, i, j;
off_t offset_store;
off_t offset;
char *buff, c;
char string_num[10] = "1234567890";
char string_Let[10] = "abcdefghil";

buff = calloc(25, sizeof(char));

if((fd = open("FILE1", (O_RDWR | O_APPEND | O_CREAT | O_TRUNC),FILE_MODE)) <0)
printf("\n an error occurred opening the file\n");

Avatar utente
michele.p
Packager
Packager
Messaggi: 1276
Iscritto il: ven 24 nov 2006, 16:52
Nome Cognome: Michele Petrecca
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: KDE
Distribuzione: ..Fedora e Mandriva
Località: Pontecorvo(FR)
Contatta:

Messaggio da michele.p »

..le costanti che hai indicato le hai definite tu oppure sono implementate in qualche file .h del kernel?...e se si, quale?

Bye

Avatar utente
doping
Linux 1.x
Linux 1.x
Messaggi: 128
Iscritto il: mer 1 feb 2006, 23:23

Messaggio da doping »

Diciamo che all'università il Prof ci ha spiegato il loro significato, ma non dove erano definite, comunque ho trovato l'header, è <sys/stat.h>, adesso funziona tutto...però sono sicuro che il prof questo .h non lo ha usato..

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

Probabilmente aveva solo un'altra versione di gcc/glibc/linux. Non ti fare troppi problemi, includi sys/stat.h e vai tranquillo :).

comunque, quando hai di questo dubbi: man open, e ti dice cosa devi includere.

Rispondi