PDA

Visualizza la versione completa : [C++] getuid e compagnia


PaTeR non PeTeR
04-01-2005, 18:11
ciao raga...
oggi su linux ho provto a compilre un piccolo file che mi stampa a video varie cose:


#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
uid_t ruserid = getuid();
gid_t rgroupid = getgid();
uid_t euserid = geteuid();
gid_t egroupid = getegid();

printf("L'utente realmente riconosciuto dal processo : %s", (char) ruserid);
printf("Il gruppo realmente riconosciuto dal processo : %s", (char) rgroupid);
printf("L'utente effettivamente riconosciuto dal processo : %s", (char) euserid);
printf("Il gruppo effettivamente riconosciuto dal processo : %s", (char) egroupid);
return(0);
}


ho fatto il

gcc file.cpp

ma il gcc mi d st errori:


root@darkstar:~/Desktop/Projects/C++# gcc UG_ID.cpp
/tmp/ccaTrxUU.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

why??? :(

Ikitt
04-01-2005, 18:22
Originariamente inviato da PaTeR non PeTeR
oggi su linux ho provto a compilre un piccolo file che mi stampa a video varie cose:[...]
ho fatto il
gcc file.cpp
ma il gcc mi d st errori:
why??? :(

Beh, se e' C++ compilalo con gcc, altrimenti rinominalo .c (strano pero' che dia 'sto errore) e usa gcc: dovresti risolvere in ambo i casi.

Una cosa: gli *uid sono interi, ti conviene, credo, stamparli come tali

PaTeR non PeTeR
04-01-2005, 19:02
mi disp... ma nisba.. stesso errore


( ho messo il %u al posto del %s e ho tolto il (char) )

PaTeR non PeTeR
05-01-2005, 00:13
Originariamente inviato da PaTeR non PeTeR
mi disp... ma nisba.. stesso errore


( ho messo il %u al posto del %s e ho tolto il (char) )
help!

Ikitt
05-01-2005, 10:04
Originariamente inviato da PaTeR non PeTeR
mi disp... ma nisba.. stesso errore


( ho messo il %u al posto del %s e ho tolto il (char) )



$ cat test1.c
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
uid_t ruserid = getuid();
gid_t rgroupid = getgid();
uid_t euserid = geteuid();
gid_t egroupid = getegid();

printf("L'utente realmente riconosciuto dal processo \uffff\uffff: %s", (char) ruserid);
printf("Il gruppo realmente riconosciuto dal processo \uffff\uffff: %s", (char) rgroupid);
printf("L'utente effettivamente riconosciuto dal processo \uffff\uffff: %s", (char) euserid);
printf("Il gruppo effettivamente riconosciuto dal processo \uffff\uffff: %s", (char) egroupid);
return(0);
}
$ gcc -Wall -o test1 test1.c
test1.c: In function `main':
test1.c:13: warning: format argument is not a pointer (arg 2)
test1.c:14: warning: format argument is not a pointer (arg 2)
test1.c:15: warning: format argument is not a pointer (arg 2)
test1.c:16: warning: format argument is not a pointer (arg 2)
$ cp test1.c test1.cpp
$ g++ -Wall -o test1_p test1.cpp
test1.cpp: In function `int main()':
test1.cpp:13: warning: format argument is not a pointer (arg 2)
test1.cpp:14: warning: format argument is not a pointer (arg 2)
test1.cpp:15: warning: format argument is not a pointer (arg 2)
test1.cpp:16: warning: format argument is not a pointer (arg 2)
$ ls test*
test1 test1.c test1.cpp test1_p
$ ./test1
Segmentation fault
$ ./test1_p
Segmentation fault


E mettendo



$ grep printf test1.c
printf("L'utente realmente riconosciuto dal processo: %i\n", ruserid);
printf("Il gruppo realmente riconosciuto dal processo: %i\n", rgroupid);
printf("L'utente effettivamente riconosciuto dal processo: %i\n", euserid);
printf("Il gruppo effettivamente riconosciuto dal processo: %i\n", egroupid);
$ gcc -Wall -o test1-2 test1.c
$ ./test1-2
L'utente realmente riconosciuto dal processo: 1010
Il gruppo realmente riconosciuto dal processo: 1010
L'utente effettivamente riconosciuto dal processo: 1010
Il gruppo effettivamente riconosciuto dal processo: 1010


Che presumo sia quanto desideravi :ciauz:

PaTeR non PeTeR
05-01-2005, 18:41
:sbav:

mi spieghi un p cosa hai fatto? :sbav:
Grazie, dopo lo provo il linuzz...

Loading