Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!ecngs!feeder2.ecngs.de!81.171.118.64.MISMATCH!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Alessandro Pellizzari Newsgroups: it.comp.os.linux.development Subject: Re: Usare o no lo stderr? Date: Sat, 10 Jun 2017 15:52:12 +0100 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Trace: individual.net XHHG9n3EkgvYnIc4vPmH0AplwLBFC0rWygwTT1yCoAOFUZWVI= Cancel-Lock: sha1:tZbAKsLaLsj+ldX0gEn7X5akCYc= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 In-Reply-To: Content-Language: en-GB X-Received-Bytes: 2376 X-Received-Body-CRC: 113872510 Xref: csiph.com it.comp.os.linux.development:56 On 10/06/17 11:33, guido84 wrote: >>> A questo punto, per evitare un'immissione che provocherebbe >>> un sigfault, ho trovato due modi, potreste dirmi qual e' il Si chiama segfault (Segmentation Fault). Te lo dico perche` rischi di far casino con le funzioni che contengono "sig" nel nome, e che servono a gestire segnali. >>> if (argc == 1) // carica l'errore in stderror? >>> { >>> fprintf(stderr, "Usage: Duplica il vettore-stringa $1 in stdout \n"); >>> exit(1); // evita il sigfault? Questo e` meglio. Leggi qui: http://courses.cms.caltech.edu/cs11/material/general/usage.html In generale il normale output del programma va in stdout. Tutto il resto va in stderr. > Dunque in conclusione e' meglio il primo modo: senza l'exit(1) ? > Usa anche una libreria in meno. stdio non e` proprio una libreria in Linux. E` per la maggior parte una dichiarazione delle interfacce della libc, che viene linkata praticamente a tutto tranne che al kernel, quindi non risparmi niente. >> PS: Mi spieghi che significa "$1" nella stringa che *dovrebbe* spiegare >> l'uso del programma> > > E' il $1 della bash, l'alternativa e' argv[1], mi sembrava piu' > chiaro e veloce con $1, con argv[1] si puo' far casino rileggendo > dopo un po' e ricordando male con la storia che comincia da 0. Rischi di creare ancora piu` confusione nell'utente, che vedendo $1 magari si aspetta uno script di shell con un bug che gli mostra il nome della variabile invece del contenuto. Bye.