|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
[C] collegare stdin con /dev/null ???
Ciao ragazzi!
Vi chiedo una cosa: mi si chiede che lo stdin sia connesso con /dev/null, lo stdout con un file in /tmp/ e lo stderr con un altro file in /tmp/. Con gli ultimi due, sono riuscito perchè basta creare due pipe con nome e il gioco è fatto, ma come si fa a collegare lo stdin con /dev/null?? cos'è /dev/null??? Spero mi potete aiutare. grazie! |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
./programma 1>/tmp/file1 2>/tmp/file2 Aggingi anche 0</dev/null e il gioco è fatto.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
apri i file che ti interessano poi usa dup/dup2 cosi rimpiazzi i file descriptor.
ciao |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
IFFERROR(fdpipe=open "/dev/null",O_WRONLY|O_CREAT|O_NONBLOCK), "aprendo pipe /dev/null"); dup2(fdpipe,STDIN); close(fdpipe); In compilazione non mi da errori, però quando lancio il programma principale e scrivo qualcosa con la tastiera non fa niente (e qui sembrerebbe funzionare), però quando termina il programma di log di quello principale, sul video vedo tutte le cose scritte prima. cioè il funzionamento di collegare l'STDIN a /dev/null non dovrebbe essere che qualunque cosa inserisca, durante l'esecuzione del programma, è come se non esistesse?? vi ringrazio! |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
e come devo fare?? |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
come si svuota il buffer? |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Credevo che la tua richiesta si riferisse alla necessità di alcuni programmi, per motivi di sicurezza, di scollegarsi dal canale di input.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Milano
Messaggi: 210
|
Quote:
Essendo un neofita del C vi chiedo di postarmi il codice che posso usare per svuotare il buffer. |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <termios.h>
int main(void) {
struct termios ios;
struct termios old_ios;
tcgetattr(fileno(stdin), &ios);
/* Salva le vecchie impostazioni. Vanno ripristinate prima di terminare il programma. */
old_ios = ios;
/* Disabilita modalita' canonica (line-buffered) e l'echo dei caratteri */
ios.c_lflag &= ~(ICANON|ECHO);
tcsetattr(fileno(stdin), TCSANOW, &ios);
/*
* Qui va messo il corpo del programma
*/
/* Eliminazione dei caratteri pendenti in coda */
tcflush(fileno(stdin), TCIFLUSH);
/* Ripristina le vecchie impostazioni */
tcsetattr(fileno(stdin), 0, &old_ios);
return 0;
}
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:48.



















