mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.os.linux.development
Titolo: thread e signals

E' da un po' che tribolo su un problema non difficile, ma che ancora non mi
risulta chiaro (e che quindi mi sta rompendo un po' le scatole :) ):
ho due thread T1 e T2:
T1 scrive su file un frame (catturato da una telecamera) per secondo e
comunica a T2 la disponibilità del frame. T2 streama i singoli frame, su
segnalazione di T1, appena disponibili.
Riporto in basso Il SEMPLICE codice che schematizza tutto ciò (è scritto in
c++ ma è facilissimo comprenderlo anche in C): qualcuno può darmi una mano a
sistemare operazioni su mutex e condition nel loro corretto ordine? Così
com'è il codice non funziona...
grazie.....
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include <pthread.h>
pthread_mutex_t my_mutex;
pthread_cond_t my_condition;
bool condizione=false;
/*
schematizza una routine che scrive su file un frame per secondo e comunica
ad
un altro thread la disponibilità del frame
*/
void* routineT1(void* obj)
{
	while(1)
 	{
 
		if(condizione)pthread_cond_wait(&my_condition, &my_mutex);
		pthread_mutex_lock(&my_mutex);
		std::cerr<<"deposito frame. ";
		condizione = true;
		sleep(1);
		pthread_cond_signal(&my_condition);
		pthread_mutex_unlock(&my_mutex);
	}
};
/*
schematizza routine che preleva i singoli frames depositati dalla routine
T1, solo nel momento in cui ognuno di essi è
disponibile
*/
void* routineT2(void* obj)
{
	while(1)
 	{
 
 		if(!condizione)pthread_cond_wait(&my_condition, &my_mutex);
 		pthread_mutex_lock(&my_mutex);
		std::cerr<< " streamo frame \n";
		condizione = false;
  		pthread_cond_signal(&my_condition);
 		pthread_mutex_unlock(&my_mutex);
 
 	}
};
int main(int argc, char *argv[])
{
  pthread_t* tt1 = new pthread_t;
  pthread_t* tt2 = new pthread_t;
  pthread_mutex_init(&my_mutex,NULL);
  pthread_cond_init(&my_condition,NULL);
  pthread_create(tt2,NULL,routineT2,NULL);
  sleep(3);
  pthread_create(tt1,NULL,routineT1,NULL);
  while(1);
}
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 grazie.....
pthread_cond_wait e pthread_cond_signal (o pthread_cond_broadcast) devono 
essere sempre associate ad un mutex, il quale va' acquisito prima del 
controllo sulla condizione e rilasciato subito dopo.
Ad esempio, nella routine di T1 non mi sembra che tu acquisisca correttamente 
il mutex prima della pthread_cond_wait.
-- 
SF
"Argue not with dragons, for thou art crunchy and go well with brie"
Newsgroup: it.comp.os.linux.development
Titolo: progetto di una GUI

salve a tutti, devo realizzare una GUI che ricetrasmetta dati seriali
contenuti in stringhe, quale linguaggio mi consigliate di utilizzare?
Grazie.

 
Quasi tutti i linguaggi permettono di fare questo. Usa quello che 
conosci meglio.
Alessandro.

Opero in ambiente linux, io avrei scelto le wxwidget....dove posso
trovare un tutorial in italiano?
la scelta è ottimale oppure sono meglio le qt o le gtk?

 
Non so darti consigli su questo perché personalmente non ho molta 
familiarità con la programmazione GUI.
Ho l'impressione che le GTK sui sistemi linux sono le più diffuse ma non 
so se questo può essere un buon metro di giudizio...
Alessandro.



Personalmente non mi piacciono le wx, per diversi motivi, slegati alla
programmazione e strettamente legati a tutto il resto: sono uno strato in
piu` nel sistema (su Linux usano le Gtk, per esempio), hanno
tendenzialmente una brutta resa grafica, hanno diversi bug di
visualizzazione, incorporano troppa roba che non c'entra con la GUI, ecc.
Io di solito consiglio Gtk,che funzionano su Linux e Windows, A breve
dovrebbero andare anche su Mac senza usare X (ora ci vanno ma serve X)
Bye.

Dove posso trovare uhn tutorial in italiano per utilizzare le GTK?
puoi darmi qualche indizio su come partire?
supportano la programmazione multithread?
Grazie.
Gennaro.

 supportano la programmazione multithread?
evita i thread come la peste.  ciò detto, si: puoi usare thread con le
GLib e le GTK+.
ciao,
 Emmanuele.

Newsgroup: it.comp.os.linux.development
Titolo: Spazio occupato da un file

Salve a tutti,
ho la necessità di sapere estrema precisione lo spazio su disco reale 
occupato da un file (quindi non le sue dimensioni effettive).
A quanto sembra la stat() non fornisce le informazioni che richiedo, in 
quanto queste dipendono strettamente dal tipo di filesystem con cui è 
stato formattato il disco (che potrei anche non sapere) che potrebbe 
utilizzare unità di allocazione di dimensioni differenti.
La pagina man di stat() riporata testualmente: "The value st_blksize 
gives the "preferred" blocksize for efficient file system I/O". E' 
questo il valore che devo usare x ottenere ciò che cerco?
Grazie infinite.
:ZEuS:

:ZEuS: wrote:

I blocchi del file realmente allocati li puoi ottenere
dal campo st_blocks, in unita' di 512 byte.
Lo spazio su disco reale e' quindi st_blocks*512.
-- 
Lorenzo

 
Grazie per la risposta, ciao.
:ZEuS:
Newsgroup: it.comp.os.linux.development
Titolo: Re: mail

Mi permetto di postare una cosa OT solo perchè puo essere utile ad altri...
http://libetpan.sourceforge.net/
è carina e sostituisce javamail.
ovviamente è gratuita.


 
http://libetpan.sourceforge.net/
Anche perchč con il f/up che ho drammaticamente scordato di segnalare č 
IT. :)
-enrico
-- 
Never argue with a logician.

 parecchio :)
Beh, se ti rivolgi ad una qualche libreria fatta e finita sei a cavallo. 
Sennò puoi dare un occhio a qualche sw open che fa quello che vuoi e 
"estrapolarne" le funzioni per manipolare mime e simili. Ovviamente devi 
segnalare il tutto e scegliere di conseguenza la licenza.
Oppure fai il tutto in Python (penso che anche Perl, Ruby, TCL etc 
abbiano modulo simile) per lavorare con le mail.
Ma non ho capito esattamente cosa devi fare e perchè... (ovvero perchè 
vuoi farlo in C++).


 
C'è uuencode / uudecode. Basta usare "uulib".
-- 
Matteo Settenvini
FSF Associated Member
Email : 
mat...@member.fsf.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++
P?>++ L+++>$ E+>+++ W+++ N++ o?
w--- O- M++ PS++ PE- Y+>++
PGP+++ t+ 5 X- R tv-- b+++ DI+
D++ G++ e h+ r-- y?
------END GEEK CODE BLOCK------

 C'è uuencode / uudecode. Basta usare "uulib".
Io l'ho trovata solo come parte di UUDeview, oppure come modulo Perl.
La documentazione pure "online" non l'ho trovata, va compilata con il 
pacchetto (bisogna avere latex e un paio di moduli aggiuntivi).
Questo è ovviamente per OP.
-riko

 Questo Ã¨ ovviamente per OP.
Maledetto client che fa casino con gli encodings. Ste cose mi
indispettiscono, scusate  a tutti.
-- 
non vincono, non vinceranno, non hanno domani
la forza è nel puntello impugnato da oneste fortissime mani

 -riko

> -riko

Newsgroup: it.comp.os.linux.development
Titolo: MoDule

ragazzi ho fatto un modulo stupido per vedere come funziona ma non funziona
niente.:
#define MODULE
#include<linux/kernel.h>
int init_module(void)
{
printk("Ciao mondo");
return 0;
}
void cleanup_module(void)
{
   printk("saluti");
}
gcc -c hello.c
insmod hello.o
// a questo punto linka il modulo ma non fa niente
rmmod hello
// toglie il modulo ma non fa nulla.........
perchč?
poi ho provato sia su red hat 7.1 caso precedente
sia sulla 7.0 che invece compilava tuutto bene
poi faccio insmod.... e mi dice che la versione del kernel non č quella
giusta ....... ho aggiunto anche
#include<linux/version.h>
#define __NO_VERSION__
ma  linkandolo mi dice sempre la stessa cosa
Grazie
A tutti
Ciao RISC!


I'm not prejudiced, I hate everyone equally.


.

 come faccio a farlo uscire a video?
man syslog
in particolare se vuoi proprio che il modulo avvertà l'utente devi mandare al
kernel un messaggio critical o error.
Anche se dipende da come configuri il syslogd.
-- 
| /
| \Byte - Andrea Briganti - 
kbyt...@freemail.it
http://www.kbytesystem.fasturl.it
ICQ: 40872731

 Anche se dipende da come configuri il syslogd.
dove trovo il syslogd che cosa è un file?
Grazie
RISC!

 grazie



il file syslog.config
#Log all kernel, messages to the consle.
#Logging much else clutters  up the screen.
#kern.*
/dev/console
#Log anything (except mail) of level info higher.
#don't log private authentication messages!
#.info;mail.none;authpriv.none;cron.none                  /var/log/messages
....................................
Grazie
Ciao
RISC!

 dove trovo il syslogd che cosa è un file?
No è il daemon di logging del kernel.
Cmq fai 
man syslog
se hai le man di sviluppo avrai le informazioni che cerchi


 RISC!
ciao .......


 
ciao e spero di essere stato di aiuto
--
Abruzzo Silvio

Scusami silvio cosa è un dmessg?
Grazie
Ciao
RISC!

 
Ciao
--
Abruzzo Silvio

Grazie Silvio
....input......... ;-)
Newsgroup: it.comp.os.linux.development
Titolo: Sniffer Wireless (C)

Dovrei realizzare un progettino... uno sniffer di  comunicazioni wireless
scritto in C
e, utilizzando (se possibile ?) le libpcap.
Immagino che la Rete sia piena di documentazione (?), ma vi chiedo di
consigliarmi voi delle risorse, magari già passate al vostro giudizio, così
da prendermi del tempo prezioso... ne ho molto poco...sigh! :)
Da quanto ho capito ora, andrò a lavorare sullo strato "data link" ....
poi mi servirebbe della bella documentazione sulle funzioni ,delle pcap,  ke
possono essere orientate al mio intento.
Per ora mi è venuto in mente di scaricarmi solo le specifiche dello IEEE
riguardante i "pacchetti" che viaggiano su wireless....
anzi vado a cercarmele!
Ringrazio già per la sola lettura di questo post :-P
Buon proseguimento!
- Simone -

 Per ora mi è venuto in mente di scaricarmi solo le specifiche dello IEEE
Credo che se ancora stai pensando alle specifiche ci vorrà un po' di tempo
per realizzare il progetto. Comunque dopo avere stampato e letto tutte le
RFC relative, andrei a vedere che cosa è già stato fatto in giro con
l'intento di imparare leggendo il codice.
Questo è un elenco di applicazioni, prevalentemente in C e che utilizzano le
libpcap, con i link per scaricare il codice:
 
http://www.stearns.org/doc/pcap-apps.html
Ti segnalo in particolare AirSnort e Kismet.
Ciao,
Fabio MDF
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 libpcap, con i link per scaricare il codice:
ciao, scusate la domanda (probabilmente) banale,
se vado in \lib\ trovo una marea di librerie, come faccio a sapere,
partendo dal nome della libreria, quali funzioni questa svolge? (oltre
cercarmi i sorgenti, ovviamente ^__^)
ciao
-- 
Er Baitch
"Live Your Life!!!" (Ring ain't a jail)
http://baitch.altervista.org/

 Fabio MDF
Ti ringrazio di cuore per l'aiuto!
Ciao!
Simone

Newsgroup: it.comp.os.linux.development
Titolo: Creare un windows manager da zero

esiste qualche documento che spiega come creare da zero un gestore di 
finestre tipo twm, è un po' che googlo ma magari sbaglio termini.

Dovresti cercare nella documentazone di X. Tempo fa trovai un rpm chiamato
XFree86-doc-3.3.6-20.i386.rpm dove puoi trovare anche la documentazione
riguardante i WindowManager.
Puoi dare uno sguardo ai sorgenti di WM light tipo evilwm, aewm, ratpoison e
simili. Se conosci il pascal puoi vedere XPde (in realtà è un Desltop
Environement con annesso il WM che sono due file )
Bye,
Raktzo

prova a vedere 
http://unix.freshmeat.net/projects/tinywm/
ciao
Newsgroup: it.comp.os.linux.development
Titolo: tail su file

Ciao a tutti,
vorrei leggere un file esattamente come fa il comando 'tail', questo
perchè vogio scrivere un programma che possa mettersi in ascolto su
qualsiasi file di log passato per argomento.
C'è qualcuno che può farmi vedere qualche esempio in C/C++ o che possa
indicarmi della documentazione in proposito?
Ciao
Giampiero

Giampiero Gabbiani:

Puoi partire dall'originale, visto che i sorgenti sono disponibili:
http://www.gnu.org/software/coreutils/
http://ftp.gnu.org/pub/gnu/coreutils/
Ovviamente se fai delle modifiche a quei sorgenti il risultato ricade sotto
la licenza GPL.
Alessandro.

Newsgroup: it.comp.os.linux.development
Titolo: documentaazione ncurses

Dove posso trovare la documentazione delle librerie del C tipo cursers e
ncurses? Visto che provengo dal C per dos sento la mancanza di conio.h, ma
lě almeno avevo la documentazione...

lě almeno avevo la documentazione...
Info ncurses e' un buon inizio, poi
man addch 
man addchstr
etc.etc.etc. come leggi su info, trovi tutto cio' che serve.
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net

Newsgroup: it.comp.os.linux.development
Titolo: Sorgenti d'esempio sull'uso delle funzioni posix banali come open(), close(), lseek(), ecc.

Ciao a tutti, mi sapreste indicare qualche fonte online con sorgenti che 
siano d'esempio di uso delle funzioni posix più banali come:
OPEN
CLOSE
READ
WRITE
LSEEK
CREAT
Ho cercato con google ma con le mie query non sto trovando niente :(
  ciao e grazie, rz
-- 
"Una riga lasciata bianca può valere più di 100 parole"

 siano d'esempio di uso delle funzioni posix più banali come:
cerca gapil

Newsgroup: it.comp.os.linux.development
Titolo: gestionali linux

sarebbe bello averli, magari open source o anche solo 
a costi non esorbitanti. Si entrerebbe con soluzioni
integrate nelle PIM che potrebbero rimpiazzare tutta la robaccia.
L'unico progetto che conosco e' Kontor, fermo da un anno.
Oppure provare a farli.
Qalcuno ha qualche info in piu o considerazioni varie ?


Sono l'ultimo baluardo della nostra industria sw, vuoi definitivamente
affossare tutte le sw house? Putroppo ci metterebbe molto poco un
sw opensource a rivelarsi di gran lunga meglio della media 
dei pacchetti gestionali, scritti con i piedi e manutenuti peggio...
-- 
Francesco P. Lovergine


Gia'. Pero' potresti farci un sacco di soldi sull'assistenza.
bye
Gianluca, che continua ad essere convinto che le sw non adottano
l'opensource perche' poi sarebbero costrette a trattare bene i clienti e
non li potrebbero piu' spennare come tacchini il giorno del ringraziamento.

 non li potrebbero piu' spennare come tacchini il giorno del ringraziamento.
concordo.
Inoltre sarebbero costrette a far vedere il loro "stile" di programmazione.
Bah!
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
ICQ: 4755831
VOTE AGAINST SPAM! 
http://www.politik-digital.de/spam/it/
Contro i brevetti software: 
http://petition.eurolinux.org/index_html
Newsgroup: it.comp.os.linux.development
Titolo: malloc?

Ho  un problema  con un  programma:  dichiaro un  *gchar come  variabile
globale  poi arrivo  sempre ad  un segmentation  fault quanto  la voglio
usare per  aprire un file.  Un mio  amico mi ha  detto che è  perché non
alloco prima la  memoria con malloc e che viene  quindi sovrascritta. Ma
scusate un attimo, va bene che conosco poco C, ma una volta che dichiaro
la variabile non mi viene allocata  la memoria per essa? Mi sembra molto
strano in java una volta dichiarata  la variabile la porzione di memoria
da essa utilizzata non viene toccata da nessun'altra variabile..
-- 
Non c'è più forza nella normalità: c'è solo monotonia.

 writes:
OC> Ho  un problema  con un  programma:  dichiaro un  *gchar come  variabile
OC> globale  poi arrivo  sempre ad  un segmentation  fault quanto  la voglio
OC> usare per  aprire un file.  Un mio  amico mi ha  detto che è  perché non
OC> alloco prima la  memoria con malloc e che viene  quindi sovrascritta. Ma
Quando dichiari "char *gchar" hai  allocato *solo* lo spazio per un *punta-
tore*  (ad un'area non  ancora definita  in cui  memorizzerai dei  char), e
*non* anche per l'area che dovra` contenere i dati.
Per fare questo o dichiari "char gchar[1234]" (ossia gli dai gia` la dimen-
sione: soluzione statica ma piu`  veloce), o allochi poi un'area di memoria
e assegni il suo indirizzo a gchar con "gchar = malloc(1234)" (piu` flessi-
bile, ma piu` penalizzante in termini di performance a runtime).
Una sorta  di "terza via" si apre  quando usi una funzione  di libreria che
alloca (dinamicamente o staticamente) da  se' lo spazio necessario e ti re-
stituisce il solo puntatore.
Saluti,
Luca Polo.
-- 
Luca...@gest.unipd.it
 --- 
http://www.gest.unipd.it/~jake
----------------------------------------------------------
One Ping to rule them all. One Ping to find them.
One Ping to bring down them all.
And in the darkness crash them.         [The Lord of the Pings (of Death)]

Newsgroup: it.comp.os.linux.development
Titolo: c++ iniziare

cosa mi serve per iniziare a programmare in c++ sotto linux?
conosco il c++ e ho programmato sotto windows ma cosa utilizzo per linux?
grazie

cosa mi serve per iniziare a programmare in c++ sotto linux?
man g++
-- 

 c++ e ho programmato sotto windows ma cosa utilizzo per linux? grazie
Prima devi capire bene come funziona linux.
poi un libro del tipo "impaprare la programmazione linux in 24 ore"
tecniche nuove per iniziare un pň...
poi un libro come "Advanced Programming in the UNIX Enviroment"
se abiti a roma puoi passare da Ingegneria 2000 che per quezssti testi č
ben fornita (Vicino il colosseo).
Buon lavoro!!!
Mario.

per programmare in ambiente KDE con le ottime QT puoi consultare 
all'indirizzo
www.andamooka.org/index.pl?section=kde20devel
Non è però un tutorial sul C++!

Newsgroup: it.comp.os.linux.development
Titolo: Nome dispositivo nelle librerie ALSA.

Nella chiamata a funzione:
	errcode = snd_pcm_open (&capture_handle, NomeDispo, SND_PCM_STREAM_CAPTURE, 0)
No so a cosa debba corrispondere la stringa NomeDispo.
Grazie 1000 a coloro che tenteranno di farmelo capire.

 No so a cosa debba corrispondere la stringa NomeDispo.
Di solito /dev/dsp, ma non ho mai provato :))
Ciao, Nicola.
-- 
chi va pian va san e va lontan

 No so a cosa debba corrispondere la stringa NomeDispo.
Dipende... in genere come device userai plughw (a meno che tu non voglia
un controllo totale  sull'hardware, in quel caso usi  hw). Poi seguono i
due punti ':' quindi il numero della  scheda audio e del device che vuoi
usare (numerati  a partire  da 0). "plughw:0,0"  dovrebbe andare  bene a
meno che tu non abbia una configurazione strana.
Nella directory  /proc/asound/card0 troverai tutti i  device disponibili
per la scheda 0. I device sono sempre in coppia: pcm0p (primo device pcm
per playback) e pcm0c (primo device pcm per registrazione).
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Tentare e` il primo passo verso il fallimento.
Homer J. Simpson
Newsgroup: it.comp.os.linux.development
Titolo: threads e signal

Se io ridefinisco l'intercettazione del segnale INT in un architettura multithreads come posso fare (all'interno della procedura che deve gestire l'evento) a capire se la sta eseguendo uno dei thred generati o quello principale?
In altri termini:
- Processo parte
- Crea 10 threads (eseguono la funzione DoThread)
- ridefinisco l'evento ( signal(ArrivaINT,SIGINT) )
- arriva il CTRL+C (INT)
- Tutti e 11 eseguono ArrivaINT
Come faccio a capire chi la sta eseguendo, dato che vorrei che solo il threads principale (quello che non fa DoThread) faccia qualcosa????
-- 
Strhad
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]

 o quello principale?
Se n'e' parlato di recentissimo, guardare i post precedenti, ad
esempio...? 
-- 
HappyCactus - Linux User #209744 - 
http://pngstego.sourceforge.net
 
 
www.google.com
 - 
groups.google.com
/* Ci sono 10 categorie di persone al mondo: quelle che capiscono */
/* il sistema binario e quelle che non lo capiscono.              */

il threads principale (quello che non fa DoThread) faccia qualcosa????
con pthread_self puoi avere un puntatore al thread corrente. Tuttavia non
dovrebbe essere una cosa furba, perché come è stato discusso qualche
giorno fa sul ng tutti i thread dovrebbero condividere gli stessi handler
per i segnali.
Come già suggeritoti, leggi un po' i vecchi post.

 threads principale (quello che non fa DoThread) faccia qualcosa????
1) Righe lunghe - di 80 caratteri please.
2) comp.programming.threads FAQ
10. (DCE, POSIX, UI) Why does my threaded program not handle signals sensibly?                                          
 
   Signals and threads do not mix well. A lot of programmers start out by
writing their code under the mistaken assumption that they can set a signal
handler    
   for each thread; this is not the way things work. You can block or
unblock signals on a thread-by-thread basis, but this is not the same thing.               
 
   When it comes to dealing with signals, the best thing you can do is
create a thread whose sole purpose is to handle signals for the entire
process. This      
   thread should loop calling sigwait(2); this allows it to deal with
signals synchronously. You should also make sure that all threads (including
the one       
   that calls sigwait) have the signals you are interested in handling
blocked. Handling signals synchronously in this way greatly simplifies
things.            
 
   Note, also, that sending signals to other threads within your own process
is not a friendly thing to do, unless you are careful with signal masks. For
an     
   explanation, see the section on asynchronous cancellation. 
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
	**ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
 -<! Woe to you, oh Earth and Sea, for the Devil sends the Beast with
      wrath, because He knows the time is short... !>- Revelations, XIII - 18
Newsgroup: it.comp.os.linux.development
Titolo: Headers

Allora... dovrei usare le funzioni per impostare le ipchains via C.
Il problema č: immagino che g++ cerchi gli headers in /usr/include, e
il ramo "linux" degli include č piů vecchio di quello che ho in
/usr/src/linux/include/linux (kernel 2.2.13). Se copio questi ultimi
in /usr/include faccio qualche casino o faccio la cosa corretta? O in
altre parole: quando installo un kernel nuovo (in tar.gz) dovrei
poi preoccuparmi - a parte l'installazione dell'immagine - di copiare
anche gli headers e altre cosucce per avere la "situazione a posto"?
Ciao

anche gli headers e altre cosucce per avere la "situazione a posto"?
nella debian la policy e' quella di mantenere in /usr/include un set di
header congruenti con il kernel fornito dalla distribuzione (che e'
quello verso il quale e' stata compilata la libc e programmi vari) e di
mantenerli anche in caso di aggiornamento del kernel
questo perche' occasionalmente puo' capitare che un cambiamento negli
header causi dei problemi alla compilazione con la libc fornita
se servono header piu' recenti basta passare 
-I/usr/src/linux/include al compilatore
-- 
Andrea Iosio                                            .---.
                                                       < ^ ; ~,
                                                        (_  _,    "Piyo"
                                                         J^^>

anche gli headers e altre cosucce per avere la "situazione a posto"?
Di solito no, ma a quanto pare la tua distribuzione installa header
vecchi.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

 anche gli headers e altre cosucce per avere la "situazione a posto"?
Se il tuo sistema e` basato su glibc2 in teoria non dovresti mai avere
bisogno di includere <linux/*>. E` uno dei capisaldi alla base della
mentalita` di progetto della glibc.
Prima di fare cose strane (tipo mettere un argomento al compilatore
-I/usr/src/linux/include) controlla che cio` che cerchi non sia gia`
contenuto in /usr/include/* (tipo /usr/include/sys o qualcosa del genere)
Vai a guardare i sorgenti del tool "ipchains" per capire come ha fatto
Rusty se hai dubbi.
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

 Rusty se hai dubbi.
Già, effettivamente era il metodo migliore. Lui (Rusty) differenzia gli
include a seconda che sul sistema ci siano libc5 e glibc2 (nel primo
caso include linux/*, nel secondo netinet/*).
Ciao.
Newsgroup: it.comp.os.linux.development
Titolo: Re: conoscere lo stato di un socket

 Grazie.
man select() ti potrebbe essere utile
Ciao, AM



 ogni socket ?
Forse getpeername(2) esce con errno ENOTCONN se l'altra metà ha chiuso. 
Però controlla, perché non è detto.
Considera cmq che è una chiamata di sistema, il che implica un passaggio
da userspace a kernelspace, il che è generalmente più lento che a
rimanere in userspace (tenendoti ad esempio lo stato in un vettore
parallelo, come dicevi).
Peraltro, occhio che il socket disconnesso lo devi comunque chiudere anche
tu, pena un leak di file descriptor e incazzature dall'altra parte, la
quale rimane in stato CLOSE_WAIT finché non chiudi pure tu (o fin quando
non scade il timeout, ma è alquanto seccante).
PS: select(2) non credo serva a nulla qui
-- 
  |   \    \  | ___|_  |_  |  ianezz a casa sua... :-)
  |  _ \  | \ | _|    /   /   Verba volant, scripta
 _|_/  _\_|  _|____|___|___|  manent, data corrupted

 Grazie.
Non so se ho capito bene il problema.
hai N connessioni del cui stato tieni traccia con select() e ogni tanto
scopri che alcune vengono chiuse? O vuoi scoprire se vengono chiuse?
Se il problema e' soltanto quello di gestire il pool io ho usato la
syscall dup2. Non c' e' bisogno di array in quanto i descrittori di files
in Unix/Linux sono interi con caratteristiche ordinali, ogni open
restituisce un filedescr incrementato. Usando questa caratteristica,
puoi, con dup2 (ma anche con dup()) duplicare quello di indice piu' alto
in quello chiuso e poi chiudere quello di indice piu' alto, indi
decrementare il contatore di socket attivi, cosi' al passaggio di select()
ne testi di meno, e quelli da 3 a N sono tutti attivi. Non hai bisogno di
variabili per memorizzare i FD, solo devi incrementare una var intera da
3 a N e usarla di volta in volta come FD per read() o getpeername()
o write() ....
La dub() a differenza di dup2() restituisce FD di copia dell' indice piu'
basso di quelli disponibili, ma per questo devi aver chiamato close.
Invece dup2() chiama close se l' indice del dublicato e' un FD attivo
(o in chiusura).
Chissa' se ho capito bene il broblema?
Ciao
Roberto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.os.linux.development
Titolo: Il path dell'eseguibile

Visto che il problema potrebbe essere frequente, allego la soluzione, cosi'
come elaborata finora grazie ai vostri consigli.
Commenti e suggerimenti sono ben accetti :-)
------
#include <unistd.h>
#ifdef __cplusplus /* versione c++*/
#include <fstream>
#include <cstdio>
#include <string>
extern "C++" {
const std::string mypath(char* argv[]){
    std::string command = "which " + std::string(argv[0]);
    /* ottengo il path chiamando "which argv[0]" */
    FILE *aux = popen(command.c_str(), "r");
    std::ifstream piped(fileno(aux));
    std::string res;
    getline(piped, res);
    pclose(aux);
    /* rimuovo il nome dal path */
    res = res.substr(0, res.find_last_of("/"));
    return res;
}
} /* extern "C++" */
#else /* versione C */
#include <stdio.h>
#include <string.h>
extern "C" {
void mypath(char* argv[], char* dest, const int& len){
    char *tmp;
    char command[PATH_MAX] = {'\0'};
    strcat(command, "which ");
    strcat(command, argv[0]);
    /* ottengo il path chiamando "which argv[0]" */
    FILE *aux = popen(command, "r");
    fread(dest, len, 1, aux);
    pclose(aux);
    /* rimuovo il nome dal path */
    tmp = strrchr(dest, '/');
    *tmp = '\0';
    return;
}
} /* extern "C" */
#endif /* defined __cplusplus */

 #else /* versione C */
Propongo:
#include <stdio.h>
#include <string.h>
#include <limits.h>
int mypath(const char *argv0, char *dest, const int len)
{
	char *tmp, command[PATH_MAX] = "which ";
	FILE *aux;
	strncat(command, argv0, PATH_MAX - 7);
	if ((aux = popen(command, "r")) == NULL) {
		perror("popen()"); return 0;
	}
	if (fgets(dest, len, aux) == NULL) {
		if (ferror(aux)) perror("fgets()");
		return 0;
	}
	if (pclose(aux) == -1)
		perror("pclose()"); 
	if ((tmp = strrchr(dest, '/')))
		*(tmp+1) = '\0';
	return 1;
}
A rigore, comunque, bisognerebbe verificare la presenza del comando 'which'.
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 wrote :
/* versione C */
|
| Propongo:
[...]
bhe', un po' di error checking, male non fa :)
[...]
| if ((tmp = strrchr(dest, '/')))
| *(tmp+1) = '\0';
dici di lasciare la '/'?
| A rigore, comunque, bisognerebbe verificare la presenza del comando
'which'.
Non e' standard, su unix? O almeno, io l'ho sempre trovato...

     /* ottengo il path chiamando "which argv[0]" */
Bleah!
(immagino che tratti a parte il caso "eseguibile al di fuori di $PATH")
Ciao
 David
-- 
<d.santinoli presso mi . flashnet . it>

 Non e' standard, su unix? O almeno, io l'ho sempre trovato...
Sulla RH è su un rpm a parte, il che implica che può non essere
installato.

Newsgroup: it.comp.os.linux.development
Titolo: IDE x C++ e wxWidget_ Eclise cdt è valido ?

Quale IDE scegliere per sviluppare in C++ utilizzando wxWidgets e
openGL ?
ciao e grazie

 ciao e grazie
Potrebbe andare bene
io uso DialogBlocks
http://www.anthemion.co.uk/dialogblocks/



xchè qualcuno mi dice lascia perdere Eclipse e usa un IDE
nativo...quali svantaggi puo portare un ECLIPSE Cdt  rispetto a un
DialogBlock a tuo avviso....io non ci capisco nulla...per gli IDE si
riverifica lo stesso dilemma che si aveva nella scelta tra wxWidgets
-Qt-etc ....ma almeno la le scelte erano equivalentemente altrettanto
valide8alla fine...se ho ben capito) ..mentre per la scelta di un IDE
x wxWidgets non vedo tanta gente entusiasta di uno in
particolare...anche se DialogBlock da web sembra notevole (ma ho
smesso di fidarmi di un pezzo del web_proprietario ...)
ciao e grazie di cuore veramente di tutto
ciao

 ciao e grazie
Usa CodeBlocks  
www.codeblocks.org
Ciao
Romano



 ciao Romano....e lo so che avrai di meglio da fare...il fatto è che
aggiungi per cortesia almeno il xchè di tale consiglio....ti
spiego...non sono un esperto di programmazione e di IDE framework  e
toolkit ed altra diavoleria simile ...ne so proprio poco...è che x
motivi di forza maggiore mi devo avventurare a fare alcuni moduletti
che devono avere un minimo di GUI(userò wxWidgets)...avevo anch'io
visto CodeBlock ...ma poi mi pare non sia un IDE ma solo un toolkit
mancando di molte cose che forse Eclipse CDT ha...ma non trovo nessuno
che mi sa dire come effettivamente i due sono sul campo....poi ho
visto anche DialobBlocks che pare sia il migliore (costa tra l'altro
su 100E mi pare....ma anche qui non trovo un programmatore che mi
sappia confermare o meno...se riesci ti prego chiarisci..altrimenti
prego qualche buona anima a farsi viva....in realtà da qualche giorno
sto rompendo l'anima...ne sono consapevole...mah
ciao Romano e ciao a tutti e
grazie
cristian

Newsgroup: it.comp.os.linux.development
Titolo: Numero di tracce audio in uno script

Qualcuno di voi mi sa fornire un semplice metodo per risalire alle
tracce audio di un CD audio inserito nel CD ROM in uno script bash?

tracce audio di un CD audio inserito nel CD ROM in uno script bash?
Freshmeat, numtracks.
--
  	Giuseppe "Cowo" Corbelli  -->>  Riding on Linux-2.2.14
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Any sufficiently advanced bug is indistinguishable from a feature. !>-
                 Rich Kulawiec
Newsgroup: it.comp.os.linux.development
Titolo: apache php linux

CIAO
QUALCUNO SA DOVE POSSO TROVARE UNA RACCOLTA DI .RPM PER PHP?
CIAO

 QUALCUNO SA DOVE POSSO TROVARE UNA RACCOLTA DI .RPM PER PHP?
1° non urlare.
2° cosa intendi per raccolta di rpm x php ???
-- 
-------------------------------------------------------------------------------
Ti rendi conto che stai passando troppo tempo sulla Rete quando...
        Ti fai fare un tatuaggio con la scritta "This body best viewed
        with Netscape Communicator 4".
-------------------------------------------------------------------------------

Newsgroup: it.comp.os.linux.development
Titolo: creare distro

Salve a tutti :)
Spero che questo messaggio sia in topic.
Come si crea una distribuzione Linux orientata agli utenti poco 
esperti? Voglio dire:
a) bisogna ("è consigliabile") prendere tutti i sorgenti e creare 
appositamente gli rpm?
b) per il programma di installazione, esiste un qualcosa di 
predefinito o bisogna crearlo da zero?
Quanti dipendenti servono ad un'azienda per creare una 
distribuzione? :)
La Mandrake, per esempio, quanti ne ha?
E soprattutto, da chi si va per stampare i cd ed i manuali e 
creare il package?
Chiedo a voi perché essendo sviluppatori magari sapete qualcosa...
grazie - saluti :)
Marco Zanon [
http://www.marcozanon.com
]

 La Mandrake, per esempio, quanti ne ha?
http://www.mandrakesoft.com/company/about?wslang=it
"Diversi fattori hanno contribuito all'eccezionale crescita dell'azienda,
che è passata da 3 a più di 100 dipendenti in 2 anni."
-- 
Marco

 Chiedo a voi perché essendo sviluppatori magari sapete qualcosa...
Io non sono uno sviluppatore, è uguale?
Ciao.
-- 
***  Per E-mail rimuovi ModE dall'indirizzo  ***
  *** Linux user # 198661 --- ICQ 33500725 ***
*** homepage 
http://web.tiscalinet.it/kailed
 ***
            *** Powered by Linux ***
Newsgroup: it.comp.os.linux.development
Titolo: Creare più socket contemporaneamente...

Dunque, ho creato un semplice portscanner che testa tutte le porte da 1 a
65535 sul protocollo TCP di un determinato Host/ip.
Se lancio il portscanner su localhost il tempo di attesa è di circa 5
secondi (ottimo). Se provo a lanciarlo (chessò, su 
http://www.google.it
 o
qualunque host/ip internet), il tempo di attesa diventa enorme (ho calcolato
che ci metterebbe qualche giorno a finire il portscan).
Il problema sta nella funzione connect() inclusa nell'header <sys/socket.h>.
Ho già impostato una funziona di timeout in caso di "porta chiusa". Quindi
ogni volta che trova una "porta non aperta" sull'host, scatta il timeout ed
ecco spiegata l'interminabile attesa (perchè deve ripetere il processo di
timeout per quasi 65535 volte).
Volevo sapere se è possibile inizializzare tutti e 65535 socket in una sola
volta, attendere che ricevano una risposta di connessione, e visualizzare le
socket che sono riuscite a connettersi.
In questo modo il tempo di attesa si ridurrebbe e io potrei lanciare il
portscan anche su host/ip internet.
Se non mi sono fatto spiegare in modo abbastanza preciso, scrivetelo pure.
Ringrazio l'attenzione di tutti coloro che leggeranno/scriveranno questo
topic.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Potresti utilizzare i thread ... ogni fork una connect...
On Thu, 05 Feb 2004 14:44:51 GMT, 
ad...@pierotofy.it
 (Piero Tofy)
wrote:


Ehm... premetto di essere alle prime armi con il C.
Cosa sono i thread e le fork? Le fork (dagli esempi che ho trovato)
dovrebbero essere dei processi "figli", ma non ne so di più sul loro uso...


 socket che sono riuscite a connettersi.
Puoi  usare  socket  non  bloccandi e  usare  poll/select. La  soluzione
piu`  facile  e`  pero`  con  la  fork(). Side  note: 65535  connessioni
contemporanee possono essere viste come  un atto ostile, limitati ad una
decina in parallelo.
Per  i dettagli  vedi fork(2),  select(2), setsockopt(2). Se  non ti  e`
chiaro qualcosa chiedi.
Luca
-- 
Home: 
http://kronoz.cjb.net
Non sempre quello che viene dopo e` progresso.
Alessandro Manzoni

 decina in parallelo.
Non solo, le installazioni "standard" di Linux permettono "soltanto" 1024 files
aperti per processo...
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 uso...
http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html
e in generale:
http://gapil.firenze.linux.it/
Newsgroup: it.comp.os.linux.development
Titolo: configure: error: The important program mcopidl was not found!

Salve,
sto muovendo i primi passi con kdevelop e il c++, mi potreste spiegare
come evitare l'errore in oggetto ? Dal menu di kdevelop Compila/configure
ottengo come output questo cavolo di errore. Come fare per eliminarlo ?
Grazie
Giuseppe Torelli

Giuseppe Torelli wrote:

come non detto, non avevo installato il pacchetto arts-devel !
Giuseppe Torelli
Newsgroup: it.comp.os.linux.development
Titolo: KernellDriver

Ragazzi devo scrivere un kernel Driver ddove devo iniziare?
Grazie
Saluti a tutti

In libreria, o se sei fortunato in biblioteca:
Linux Device Drivers di A.Rubini
purtroppo è per kernel 2.2.x
-----
krypton8-AT-inwind-DOT-it

 la seconda edizione e` aggiornata al nuovo kernel
e si può trovare online su 
oreilly.com
matteo

 Ragazzi devo scrivere un kernel Driver ddove devo iniziare?
prova questo
www.xml.com/ldd/linuxdrive2/bookindexpdf.html
-- 
#include <stdio.h>/* (C) BW2K+2 This code is released under GPL 2+ */
int main(void){char c[]={98,108,97,107,119,111,108,102,64,116,105,
115,99,97,108,105,46,105,116,32,119,101,98,46,116,105,115,99,97,108,
105,46,105,116,47,98,108,97,107,119,111,108,102,0};printf("%s\n",c);}

Ragazzi ma un kernel driver è un modulo del kernel se non è la stessa cosa
quale è la differenza?
Grazie
Saluto tutti

 quale è la differenza?
un device driver può essere implementato come LKM (loadable kernel module) 
oppure linkato come parte integrante del kernel.
ovviamente se devi realizzare un driver che non andrà inserito nella 
distribuzione del kernel, ti conviene realizzarlo come modulo..
ciao
matteo

 matteo
Grazie

Newsgroup: it.comp.os.linux.development
Titolo: Programmare in Linux

 Nel mondo Linux esiste un documento simile ?
man (sezioni 2 e 3).
Bye,
 Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

scusa forse ho formulato male la domanda
lo so che nelle man pages ci trovo praticamente tutto
quello che mi serve ma io cercavo un unico file
che contenesse tutta la documentazione.
che ne so un pdf o un ps.
 > Nel mondo Linux esiste un documento simile ?
man (sezioni 2 e 3).
Bye,
  Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4
-- 
Posted from 
relay1.ssi.enel.it
 [146.133.2.149] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 che ne so un pdf o un ps.
praticamente impossibile. Praticamente ogni libreria ha la sua
documentazione a corredo.
-- 
Non c'è più forza nella normalità, c'è solo monotonia.

 che contenesse tutta la documentazione.
Un file non so, ma un buon libro sulla programmazione di sicuro.


 che ne so un pdf o un ps.
Puoi usare texi2dvi(1) per convertire le info pages (in particolare info
glibc). Cmq non ho capito perche` vuoi un unico file, info e` molto
comodo... vorrai mica stamparlo (e` un sacco di roba)!
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Carpe diem, quam minimum credula postero. (Q. Horatius Flaccus)

in effetti ci avevo pensato di stampare il tuto ma forse
vengono troppe pagine.

Newsgroup: it.comp.os.linux.development
Titolo: g77

Ho installato SUSE 7.1 trovata in edicola, ma non era presente il g77
(o l'f77) e cosě ho prelevato l'rpm da mandrake e l'ho installato. Fin
qui tutto bene.... se da console digito "g77" mi dice che devono
seguire le apposite stringhe. Avevo creato un file con tutti il
comando di g77 (funzionante sotto Mandrake e RedHat) ma quando lo
lancio ottengo
ld cannot open crtbegin.o: file o directory inesistente
Ho controllato ma il file esiste in
/usr/lib/gcc-lib/i486-suse-linux/2.95.2/
come mai il g77 non lo trova? Inoltre mi dice che non ha i permessi
per uno dei file da compilare....
Con printenv ho notato che non esiste la stringa LD_LIBRARY_PATH; puň
dipendere da ciň?
Cosa posso fare per poter compilare?
GRAZIE IN ANTICIPO

Forse la cosa piu' semplice e' disinstallare il g77 della mandrake e
scaricare dalla rete il g77 della suse7.1. Sicuramente differiscono in
qualche piccolo dettaglio, basta un link, e non funziona niente.


Newsgroup: it.comp.os.linux.development
Titolo: Produrre eseguibili indipendenti dal OS

Ciao a tutti
Se con gcc complilo un codice in modo che sia indipendente dal sistema
operativo,
cioè senza librerie standard i/o e inserendo tutti i flag nella
compilazione che lo rendano
indipendente dal sistema operativo , tipo cosi :
il -fomit-frame-pointer serve a mantenere integrità negli indirizzi
delle varie funzioni ed è obbligatorio
il -Wall serve a dire al compilatore di mostrarci tutti i warning, si
potrebbe mettere anche il --pedantic, ma non lo consiglio perché da
warning inutili sugli assegnamenti con indirizzi, sulla parte in asm e
sulle direttive del gcc.
il -march=i386 indica che il nostro codice è per 386 e quindi non
ottimizzera per processori superiori. Questa è necessaria perché se
si utilizzano caratteristiche del processori superiori bisogna
abilitarle ed al momento ciò non è ancora stato fatto.
il -c indica che vogliamo solo la compilazione senza il linking
il -nostdlib indica che non vogliamo che sia possibile usare la
libreria standard, questo perché, ovviamente, la libc e la libc++ sono
librerie dinamiche che lavorano in user mode con le api di linux ^__^
il -nostdinc fa in modo che non vengano usati gli header di default
il fno-builtin fa in modo che non usi roba interna che ovviamente vale
solo per linux
il fno-exceptions fa in modo che non usi le eccezioni perché esse sono
dipendenti dall'os
il fno-rtti fa in modo che non possiamo usare la rtti per lo stesso
motivo visto sopra
Potreri eseguire il mio eseguibile direttamente agganciandolo ad
un bootloader come lilo?
cioè senza caricare il sistema operativo?
e quindi se fosse possibile potrei eseguire il mio eseguibile sotto i
sistemi operativi che voglio?
mi scuso preventivamente se ho scritto troppe cose errate.
GRAZIE

 sistemi operativi che voglio?
in generale sì, devi solo farti un entry point apposta.
Newsgroup: it.comp.os.linux.development
Titolo: dopo aver creato i link nel configure.in vorrei rimuoverli nel make distclean

Bello, lancio configure e mi vengono creati i link.
Ma come devo impostare i Makefile.am affinché quando lancio make distclean
vengano rimossi?

 vengano rimossi?
In Makefile.am metti
DISTCLEANFILES = 
file.xyz
 \
 
file2.xyz
 \
    etc ...
C`e` anche CLEANFILES e MAINTAINERCLEANFILES
-> info automake :)
-- 
void
<void> Pikkio: Baciami il sederino :)
<Pikkio> void: (___)(___) SMACK

Newsgroup: it.comp.os.linux.development
Titolo: Progetto rovinato!!!

Ierisera ho sovrascritto inavvertitamente alcuni files .cpp di un progetto
kdevelop con la versione di 20 giorni fa; praticamente ho perso 20 giorni
di lavoro :-(
Dell'ultima versione mi sono rimasti solamente rimasto l'eseguibile (di
debug) e i files .o
Esiste per caso un miracolo per risalire dall'eseguibile (di debug) o dai
files .o al codice? Ovviamente no :-(((((((

 kdevelop con la versione di 20 giorni fa; praticamente ho perso 20 giorni
20 giorni?
no... 
forse se fossero stati 19...
per te è giunto il momento di imparare ad usare cvs/subversion.
fallo ora.
installati cvs sulla tua macchina.
ciao

 ciao
Grazie per il suggerimento.

 installati cvs sulla tua macchina.
Prima ancora del cvs sarebbe meglio fare i backup.
Alessandro.

 files .o al codice? Ovviamente no :-(((((((
Ovvimente no, ma forse trovi ancora i file di backup (quelli che 
finiscono per "~") nelle directory dei sorgenti.
-- 
Lorenzo `paulatz' Paulatto
Trieste
``Se Gauss fosse vivo oggi, sarebbe un hacker.''
      --Peter Sarnak (Princeton University)

Newsgroup: it.comp.os.linux.development
Titolo: RFC - Interbase goes OpenSource

Borland sembra intenzionata a rilasciare InterBase come OpenSource
non so se la licenza sara' GPL o meno
voi che ne pensate ?
Secondo me e' una mossa per salvare il prodotto che 'rumors'
davano per essere abbandonato dalla Borland stessa.

Antonio Gallo wrote:

Secondo me IB č un ottimo prodotto, e se divenisse Opensource non
potrebbe che migliorare. L'anno scorso perň ho fatto spendere diversi
milioncini per le licenze di Ib, spero che non se ne accorgano ;)
Ciao
--
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'č nient'altro da aggiungere,
 bensě quando non c'č piů niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home Page: 
http://www.ugolandini.net
Mentoring: 
http://www.projectoo.com
Work Phone: 02/61860647-6-4 06/58332267
Cell Phone: 0347/6310749 - 0347/4783580
Fax Phone: 02/700 413 187
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Newsgroup: it.comp.os.linux.development
Titolo: python-xlib question

Ciao,
riporto di seguito il post già pubbligato sul ng lang.python, dove mi
hanno suggerito di venirvi a trovare :)
Sto tentando di scrivere uno script (il primo in python) per linux che
mi permetta di controllare il desktop da remoto tramite bluetooth. Uso
la libreria xlib per emulare gli eventi di mouse e tastiera e
attualmente riesco a muovere il mouse e scrivere del testo arbitrario
sulla finestra dove si trova il puntatore. Purtroppo però il metodo
fallisce miseramente per quanto riguarda il click del mouse.
Il sistema che uso è Debian  Gutsy con X.org e compiz, pythin 2.5 e
xlib da repository
Vi posto il codice che uso, se si cambia ButtonPress e ButtonRelease
con KeyPress e KeyRelease funziona:
####################################################################################
#!/usr/bin/env python
import Xlib.display
import Xlib.X
import Xlib.XK
import Xlib.error
import time
display = Xlib.display.Display()
screen = display.screen()
root = screen.root
pointer=root.query_pointer() #Serve per prendere le info necessarie
sulla finestra su cui si trova il mouse
window=pointer.child
ev_d = dict(
                time = 0, # Time of the event (useful for double-
clicks for mouse
events)
                root = root,
                window = pointer.child,
                same_screen = 1,
                child = Xlib.X.NONE,
                root_x = pointer.root_x,
                root_y = pointer.root_y,
                event_x = pointer.win_x,
                event_y = pointer.win_y,
                state = Xlib.X.NONE,
                detail =Xlib.X.Button1
        )
ev2_dict = ev_d.copy()
ev2_dict['state'] = Xlib.X.Button1 << 8 # that is ButtonXMask
ev=Xlib.protocol.event.ButtonPress(**ev_d)
ev2=Xlib.protocol.event.ButtonRelease(**ev2_dict)
display.send_event(Xlib.X.PointerWindow,ev)
display.sync() # Send the inserted events
time.sleep(500/1000)
display.send_event(Xlib.X.PointerWindow,ev2)
display.sync()
#################################################################
Un saluto e grazie in anticipo a chi voglia aiutarmi
Giovanni

Solved,
I solved using Xtest fake_input, hoping helping other people i post
the code:
#!/usr/bin/env python
import Xlib.display
import Xlib.X
import Xlib.XK
import Xlib.error
import Xlib.ext.xtest
display = Xlib.display.Display()
def mouse_click(button):   #button= 1 left, 2 middle, 3 right
        Xlib.ext.xtest.fake_input(display,Xlib.X.ButtonPress, button)
        display.sync()
        Xlib.ext.xtest.fake_input(display,Xlib.X.ButtonRelease,
button)
        display.sync()
bye,
Giovanni