Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-05-2007, 12:00   #1
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
[c] iexeclp

salve ragazzi ho il seguente problema faccio una kiamata da client c alla funzione

if ((execlp("python","Main.py",(char*)0)))

per eseguire un file python. Solo che alla chiamata mi appare la shell di python come se il secondo parametro passato Main.py non esistesse

qualcuno ha qualke idea?

Codice:
else if (pid == 0)// Processo figlio da modificare quando ci sono + elaborazioni da fare
						{
							sleep(3);	
							if ((execlp("python","Main.
py",(char*)0)))
							//if ((execlp("streamer","-c","/dev/video0","-o","elab.jpeg",(char*)0)))
							{	
								printf("errore execlp\n");
							}
							elaborazione=1;
							exit(0);
						}
						//else					//processo padre attende il figlio
						//{
							printf("aspetto ke finisca il figlio\n");
							while (wait(&status) != pid)
							printf("mio figlio ha finito\n");
							elaborazione=1;
Grazie
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:10   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
salve ragazzi ho il seguente problema faccio una kiamata da client c alla funzione

if ((execlp("python","Main.py",(char*)0)))
Il primo argomento cioè arg[0] deve comunque essere il nome del programma!

Quindi:
if ((execlp("python","python","Main.py",(char*)0)))
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:19   #3
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Il primo argomento cioè arg[0] deve comunque essere il nome del programma!

Quindi:
if ((execlp("python","python","Main.py",(char*)0)))
Grazie per la risposta veloce ho provato ma nulla da fare non mi chiama il file Main ma si apre la shell di python

Python 2.4.3 (#2, Oct 6 2006, 07:52:30)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:35   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
Grazie per la risposta veloce ho provato ma nulla da fare non mi chiama il file Main ma si apre la shell di python
Dovrebbe essere come ho detto io.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:49   #5
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Dovrebbe essere come ho detto io.



Ho provato ad aggiungere #!/usr/bin/env python sul programma Main.py

poi ho fato i permessi di esecuzione al file chmod +x main.py

ed infine ho aggiunto nel codice
if ((execlp("./Main.py",(char*)0)))

ma niente mi pare sempre la schermata di shell eppure io non chiamo affatto python... Non è che la funzione exec vuole qualke altro parametro?
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:54   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
Ho provato ad aggiungere #!/usr/bin/env python sul programma Main.py

poi ho fato i permessi di esecuzione al file chmod +x main.py

ed infine ho aggiunto nel codice
if ((execlp("./Main.py",(char*)0)))

ma niente mi pare sempre la schermata di shell eppure io non chiamo affatto python... Non è che la funzione exec vuole qualke altro parametro?
Non so che dirti .... io ho fatto una prova molto semplice e funziona:
Codice:
#include <unistd.h>

int main (void)
{
    execlp ("python", "python", "prova.py", (char*)0);
    return 0;
}
Poi ho scritto un file prova.py con dentro:
Codice:
print "hello world"
E funziona perfettamente.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 12:58   #7
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Non so che dirti .... io ho fatto una prova molto semplice e funziona:
Codice:
#include <unistd.h>

int main (void)
{
    execlp ("python", "python", "prova.py", (char*)0);
    return 0;
}
Poi ho scritto un file prova.py con dentro:
Codice:
print "hello world"
E funziona perfettamente.
Ci credo fi gurati mi sa che allora è ubuntu che sta a problemi a volte fa delle cose un pò strane... cmq forse è la fork che crea problemi bha non so cosa pensare
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 13:16   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
cmq forse è la fork che crea problemi bha non so cosa pensare
Ho provato anche con una fork ed è ok.
Hai provato a lanciare il comando a mano python Main.py? Cosa succede?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 13:40   #9
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Ho provato anche con una fork ed è ok.
Hai provato a lanciare il comando a mano python Main.py? Cosa succede?
MI apre il programma in maniera corretta
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 13:53   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
MI apre il programma in maniera corretta
Puoi provare a lanciare python come ho fatto io nell'esempietto "C"?? Giusto per curiosità, per capire se è proprio la execlp che è "fusa".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 08:32   #11
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Puoi provare a lanciare python come ho fatto io nell'esempietto "C"?? Giusto per curiosità, per capire se è proprio la execlp che è "fusa".


Ho provato col tuo codice e funziona correttamente... Non saprei adesso il motivo per cui nel mio non funziona...
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 08:49   #12
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da maforast Guarda i messaggi
Ho provato col tuo codice e funziona correttamente... Non saprei adesso il motivo per cui nel mio non funziona...
Ok ho reinstallato il compilatore e adesso funziona tutto grazie di tutto scusa se ti ho fatto perdere tempo... anzi visto che ci siamo potresti dirmi se la fork è fatta bene cioè se il padre attende che il figlio finisca il suo lavoro?

Codice:
if (elaborazione==0)
					{
						if ((pid=fork() ) < 0) 
						{
							printf("Errore di fork\n");
						}
						else if (pid == 0)// Processo figlio da modificare quando ci sono + elaborazioni da fare
						{
							//sleep(3);	
							if (execlp ("python", "python", "Main.py", (char*)0))
//if ((execlp("streamer","-c","/dev/video0","-o","elab.jpeg",(char*)0)))
							{	
								printf("errore execlp\n");
							}
							elaborazione=1;
							exit(0);
						}
						else					//processo padre attende il figlio
						{
							printf("aspetto ke finisca il figlio\n");
							while (wait(&status) != pid)
							printf("mio figlio ha finito\n");
							elaborazione=1;
						}

Grazie
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 08:56   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
potresti dirmi se la fork è fatta bene cioè se il padre attende che il figlio finisca il suo lavoro? while (wait(&status) != pid)
Se hai 1 solo figlio il while non serve, tanto wait è "bloccante", attende che un figlio termini e se ne hai 1 solo è chiaro che ritorna appena esso termina.

P.S.: nota che fare elaborazione=1 nel figlio non serve, visto che modifica solo la sua "copia" della variabile 'elaborazione'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 09:08   #14
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
Se hai 1 solo figlio il while non serve, tanto wait è "bloccante", attende che un figlio termini e se ne hai 1 solo è chiaro che ritorna appena esso termina.

P.S.: nota che fare elaborazione=1 nel figlio non serve, visto che modifica solo la sua "copia" della variabile 'elaborazione'.
é vero adesso la levo dal figlio non ci avevo pensato non mi ricordo nemmeno + perchè l'ho messa

Quindi dovrei mettere nell'else del padre solo wait(pid) giusto?

Tnx so much
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 09:17   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
Quindi dovrei mettere nell'else del padre solo wait(pid) giusto?
No, wait(&status);
Puoi testare eventualmente se wait ritorna -1 in caso di errore.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 09:39   #16
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
No, wait(&status);
Puoi testare eventualmente se wait ritorna -1 in caso di errore.
k grazie
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 14:09   #17
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
No, wait(&status);
Puoi testare eventualmente se wait ritorna -1 in caso di errore.
Scusa se ti disturbo ancora, ma ho carenza di fork in c, secondo te posso fare in modo di passare delle informazioni da padre a figlio senza aspettare ke il figlio termini per primo?

Mi spiego, sto creando un processo che come già hai visto mi manda in esecuzione tramite exec un programma in python. Da questo faccio un'elaborazione di una immagine e salvo i risultati in un file (unico modo che mi è venuto in mente per far condividere informazioni tra c e python).
Successivamente faccio fare dal processo padre, una volta che il figlio ha teminato, un controllo sui risultati.
Il problema sta proprio quì, nel senso, che io non vorrei far terminare il figlio ma solo metterlo in attesa, poichè dopo che il padre termina la sua elaborazione dovrà fare un'altra chiamata exec a python per elaborare un'altra immagine sprecando tempo e risorse. Mentre se il figlio si fosse messo in attesa la seconda chiamata ad exec poteva essere evitata!

Hai qualche idea? ti metto per semplicità il codice riassunto per fare eventuali prove

Codice:
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>


//------------------------------------Variabili per il file--------------------
#define kFileDaLeggere          "prova.txt"
//#define kFileDaScrivere         "output.txt"
#define kLunghezzaMaxStringa    100

double      numero1;
char        *stringa;
//---------------------------------------Fine variabili file--------------------
FILE        *ingresso;
int status;
pid_t pid;


int main (void)
{
    	if ((pid=fork() ) < 0) 
			{
				printf("Errore di fork\n");
			}
		else if (pid == 0)//Processo figlio 
			{
				sleep(3);	
				if (execlp ("python", "python", "Main.py", (char*)0))
				{	
					printf("errore execlp\n");
				}
				//elaborazione=1;//qui nn ha senso perkè va a modificare solo la sua copia
				exit(0);
			}
			else//processo padre attende il figlio
			{
				printf("aspetto ke finisca il figlio\n");
				//while (wait(&status) != pid)
				wait(&status);
				printf("mio figlio ha finito\n");
				printf("Lettura dal file %s\n",kFileDaLeggere);
				ingresso=fopen(kFileDaLeggere,"r");
				if(ingresso==NULL)
				printf("Errore di I/O\n");
				stringa=calloc(kLunghezzaMaxStringa,sizeof(char));
				if(stringa==NULL)
				printf("Errore di memoria\n");
				fscanf(ingresso,"%s %lg",stringa,&numero1);
				printf("Classe: %s\nValore Massimo: %g\n",stringa,numero1);
				printf("\n");
				fclose(ingresso);
				if (numero1>90)
				{
					printf("il valore è accettabile\n");
				}	
				else 
				{
					printf("il valore è troppo piccolo\n") ;
				}
			return 0;
			}
}
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 15:21   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da maforast Guarda i messaggi
Mi spiego, sto creando un processo che come già hai visto mi manda in esecuzione tramite exec un programma in python. Da questo faccio un'elaborazione di una immagine e salvo i risultati in un file (unico modo che mi è venuto in mente per far condividere informazioni tra c e python).
Successivamente faccio fare dal processo padre, una volta che il figlio ha teminato, un controllo sui risultati.
Il problema sta proprio quì, nel senso, che io non vorrei far terminare il figlio ma solo metterlo in attesa, poichè dopo che il padre termina la sua elaborazione dovrà fare un'altra chiamata exec a python per elaborare un'altra immagine sprecando tempo e risorse. Mentre se il figlio si fosse messo in attesa la seconda chiamata ad exec poteva essere evitata!
La questione è questa: la fork crea un processo figlio in cui inizialmente tutte le pagine di memoria sono condivise tra padre e figlio. La tecnica è quella del COW (copy on write), quando uno dei due processi scrive su una pagina, essa viene duplicata e quindi differenziata tra i due.
Quando nel processo figlio esegui una delle funzioni exec(), l'immagine del processo corrente viene totalmente rimpiazzata dal nuovo processo caricato. Quindi se esegui 'python', del tuo programma C non resta nulla, c'è solo più l'immagine del nuovo processo.
Quindi una volta che hai lanciato python, il processo è interamente sotto il suo controllo. Dal processo padre puoi aspettare la terminazione del figlio ma potresti anche comunicare con il figlio in vari modi (es. con le pipe) ma sono argomenti abbastanza complessi.

Se il tuo interesse è quello di sfruttare le potenzialità di python, c'è una possibilità interessante offerta da python stesso: incorporare python nella tua applicazione. Infatti python è un linguaggio "extendable" (estendibile) e "embeddable" (incorporabile).

Invece di eseguire l'interprete python come processo (figlio) separato, puoi inglobare l'interprete python nella tua applicazione. Potrai quindi impostare variabili, eseguire script, ecc... in modo diretto.

Se ti interessa questa soluzione, leggi <questo> documento. Purtroppo non so dirti di più perché di python ne so poco. Non credo che sia difficile incorporare python. In passato ho avuto la necessità di incorporare in una applicazione C l'interprete del linguaggio TCL e ti assicuro che non è stato difficile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2007, 15:29   #19
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
La questione è questa: la fork crea un processo figlio in cui inizialmente tutte le pagine di memoria sono condivise tra padre e figlio. La tecnica è quella del COW (copy on write), quando uno dei due processi scrive su una pagina, essa viene duplicata e quindi differenziata tra i due.
Quando nel processo figlio esegui una delle funzioni exec(), l'immagine del processo corrente viene totalmente rimpiazzata dal nuovo processo caricato. Quindi se esegui 'python', del tuo programma C non resta nulla, c'è solo più l'immagine del nuovo processo.
Quindi una volta che hai lanciato python, il processo è interamente sotto il suo controllo. Dal processo padre puoi aspettare la terminazione del figlio ma potresti anche comunicare con il figlio in vari modi (es. con le pipe) ma sono argomenti abbastanza complessi.

Se il tuo interesse è quello di sfruttare le potenzialità di python, c'è una possibilità interessante offerta da python stesso: incorporare python nella tua applicazione. Infatti python è un linguaggio "extendable" (estendibile) e "embeddable" (incorporabile).

Invece di eseguire l'interprete python come processo (figlio) separato, puoi inglobare l'interprete python nella tua applicazione. Potrai quindi impostare variabili, eseguire script, ecc... in modo diretto.

Se ti interessa questa soluzione, leggi <questo> documento. Purtroppo non so dirti di più perché di python ne so poco. Non credo che sia difficile incorporare python. In passato ho avuto la necessità di incorporare in una applicazione C l'interprete del linguaggio TCL e ti assicuro che non è stato difficile.


Ti ringrazio mi leggo quel documento che mi hai dato e ti faccio sapere, ti dico solo che il mio programma in python a sua volta chioama altri 4 file sempre in python nn so se questo è un problema cmq mi leggo quel doc e poi ti faccio sapere grazie
maforast è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 17:32   #20
maforast
Member
 
Iscritto dal: Aug 2003
Messaggi: 202
Quote:
Originariamente inviato da andbin Guarda i messaggi
La questione è questa: la fork crea un processo figlio in cui inizialmente tutte le pagine di memoria sono condivise tra padre e figlio. La tecnica è quella del COW (copy on write), quando uno dei due processi scrive su una pagina, essa viene duplicata e quindi differenziata tra i due.
Quando nel processo figlio esegui una delle funzioni exec(), l'immagine del processo corrente viene totalmente rimpiazzata dal nuovo processo caricato. Quindi se esegui 'python', del tuo programma C non resta nulla, c'è solo più l'immagine del nuovo processo.
Quindi una volta che hai lanciato python, il processo è interamente sotto il suo controllo. Dal processo padre puoi aspettare la terminazione del figlio ma potresti anche comunicare con il figlio in vari modi (es. con le pipe) ma sono argomenti abbastanza complessi.

Se il tuo interesse è quello di sfruttare le potenzialità di python, c'è una possibilità interessante offerta da python stesso: incorporare python nella tua applicazione. Infatti python è un linguaggio "extendable" (estendibile) e "embeddable" (incorporabile).

Invece di eseguire l'interprete python come processo (figlio) separato, puoi inglobare l'interprete python nella tua applicazione. Potrai quindi impostare variabili, eseguire script, ecc... in modo diretto.

Se ti interessa questa soluzione, leggi <questo> documento. Purtroppo non so dirti di più perché di python ne so poco. Non credo che sia difficile incorporare python. In passato ho avuto la necessità di incorporare in una applicazione C l'interprete del linguaggio TCL e ti assicuro che non è stato difficile.

Oggi in laboratorio ho incontrato un nuovo problema che ho risolto in un modo che tra un pò ti vado a spiegare. Prima però volevo sapere se invece di utilizzare una fork utilizzassi una vfork lo sapzio d'indirizzamente tra padre e figlio sarebbe lo stesso?

Il problema è il seguente:
Utilizzo un programma che si interfaccia con un robot, "player", il quale utilizza il device dev/video0 per acquisire immagini dalla camera. Avedo utilizzato una fork per avviare un nuovo processo (in python) che a sua volta fa uso del device dev/video0 tramite la libreria pyv4l per elaborare porzioni di immagini avviene un errore nella chiamata in quanto il device dev/video0 è già occupato da player. la soluzione che ho adottato è quella di annullare l'iscrizione del dispositivo subito prima di chiamare la fork exec e successivamente sottoscriverlo.

Visto che mi sembra una soluzione un pò macchinosa non potrei utilizzare la vfork per condividere le risorse tra padre e figlio?

Grazie
maforast è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Tesla sta per lanciare il Robotaxi nella...
Dead Island 2 arriva su Mac, ma a un pre...
FIA e Formula E rinnovano il matrimonio:...
Windows 11 24H2 approda su nuovi sistemi...
Le restrizioni americane hanno generato ...
Una Mercedes EQS con batterie allo stato...
Il robot Walker S2 della Cina cambia la ...
Cosa vuol dire "vantaggio quantisti...
Retelit punta sulla connettività ...
Novità WhatsApp: promemoria sui m...
AMD: la prossima generazione di schede v...
MediaWorld potrebbe diventare cinese: Ce...
Amazon in delirio da sconti: 22 articoli...
EOLO ha più di 700 mila utenti in...
Una spin-off del MIT ha creato dei super...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v