Newsgroup: it.comp.lang.c
Titolo: stdout

Salve a tutti;
Non riesco a capire come posso "raccogliere" l'output di un programma 
per utilizzarlo su di un altro.
Per esempio, io ho tty.c che e' 
#include <stdio.h>
main()
{
char *term=ttyname(1);
printf("%s",term);
}
che, se lamciato produce, ad es.
[Vi][oZ@obi1 bin]$ ./ttyn 
/dev/pts/3[Vi][oZ@obi1 bin]$ 
il problema e' che se faccio 
echo `ttyn`
ottengo un bel (null)
Ora, non ho capito una cosa, ma printf non stampava su stdout?
Comunque, ho provato anche a sostituire il printf con 
write(1,term,10) [ a proposito, dove e' definita la costante BUFSIZE]
ma ottengo solo una riga vuota...-(
Insomma, per farla breve e non vessarvi piu' con i miei tentativi [finora]
infruttousi, se voglio usare l'output di ttyn [/dev/pts/3 in questo esempio]
per usarlo in una situazione tipo
 echo "$tmp" > quello_che_mi_da_ttyn
come devo fare??
Mi scuso se il post e' risultato poco chiaro, ma sono reduce da un fine
settimana che mi ha debilitato alquanto.
Grazie  a tutti
Vi][oZ
 
-- 
Per rispondere togliere NONSCASSA da reply-to.

 wrote:
Vo>Salve a tutti;
Vo>Non riesco a capire come posso "raccogliere" l'output di un programma 
Vo>per utilizzarlo su di un altro.
Con il tuo problema non c'entra nulla. L'errore e' altrove:
[root@fokhouse /tmp]# cat test_tty.c
#include <unistd.h>
#include <stdio.h>
int main()
{
        if (isatty(1))
                puts(ttyname(1));
        else
                puts("Not a terminal!");
        return 0;
}
[root@fokhouse /tmp]# make test_tty
cc     test_tty.c   -o test_tty
[root@fokhouse /tmp]# ./test_tty
/dev/tty3
[root@fokhouse /tmp]# echo $(./test_tty)
Not a terminal!
[root@fokhouse /tmp]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 wrote:
Aah...
Ho capito, ma allora mi sai spiegare anche il perche'?
E comunque, sai per caso come faccio a risolvere il mio problema senza
passare da file di appoggio??
grazie ancora


 wrote:
[ snip ]
Vo>Aah...
Vo>Ho capito, ma allora mi sai spiegare anche il perche'?
Lo standard output del processo che esegue il programmino non
e' un terminale (tty).
Vo>E comunque, sai per caso come faccio a risolvere il mio problema senza
Vo>passare da file di appoggio??
Veramente non ho capito cosa devi fare.
Rileggendo il tuo messaggio una soluzione potrebbe essere
echo "Pippo" >/dev/tty


Forse vuoi vare una semplice "pipe"  |  , cioè redirigere l'output di un
programma come input di un altro ?
Oppute ti serve una "tee" che ti copia l'output su due diversi canali di
uscita ?
Puoi anche combinarle tra loro.
Forse non hai bisogno di scervellarti col C
--
________________________________
Togliete NoSpaM per rispondermi
bye Brain

 wrote:
Mi sento veramente una pippa...
tutto quello che mi serviva era il programma "tty",
che restituisce il nome del terminale in uso.
Magari mi piacerebbe vedermi i sorgenti, quando ho tempo li cerco-)


 wrote:
[ snip ]
Vo>tutto quello che mi serviva era il programma "tty",
Vo>che restituisce il nome del terminale in uso.
Attenzione: 'tty' verifica lo standard input.
[root@fokhouse /tmp]# info tty 2>/dev/null | grep -A 1 ^\\W\\+\`tty\'
   `tty' prints the file name of the terminal connected to its standard
input.  It prints `not a tty' if standard input is not a terminal.
[root@fokhouse /tmp]#
Vo>Magari mi piacerebbe vedermi i sorgenti, quando ho tempo li cerco-)
Per una versione molto molto grezza:
[root@fokhouse /tmp]# cat test_tty-2.c
#include <unistd.h>
#include <stdio.h>
#define FD 0
int main()
{
        if (isatty(FD))
                puts(ttyname(FD));
        else
                puts("Not a terminal!");
        return 0;
}
[root@fokhouse /tmp]# gcc test_tty-2.c -o test_tty-2 -Wall -pedantic
[root@fokhouse /tmp]# ./test_tty-2
/dev/tty1
[root@fokhouse /tmp]# echo $(./test_tty-2)
/dev/tty1
[root@fokhouse /tmp]#
A proposito, per domande relative a Linux/Unix sono probabilmente
piu' indicati NG come it.comp.linux[.development] o it.comp.unix.


piu' indicati NG come it.comp.linux[.development] o it.comp.unix.
Hai ragione, scusa, e' che ormai il post originario mi era scappato qui...
