Sto scrivendo una funzione, che, dato un argomento, reindirizzerà lo stdout a un file o leggerà lo stdin da un file. Per fare questo chiudo il descrittore di file associato allo stdout o allo stdin, in modo che quando apro il file si apra sotto il descrittore che ho appena chiuso. Funziona, ma il problema è che una volta fatto questo, ho bisogno di ripristinare lo stdout e lo stdin su cosa dovrebbero essere realmente.Riapertura dei descrittori di file stdin e stdin dopo la loro chiusura
Quello che posso fare per stdout è aperto ("/ dev/tty", O_WRONLY); Ma non sono sicuro del perché funzioni e, cosa più importante, non so di una dichiarazione equivalente per stdin.
così ho, per stdout
close(1);
if (creat(filePath, O_RDWR) == -1)
{
exit(1);
}
e per stdin
close(0);
if (open(filePath, O_RDONLY) == -1)
{
exit(1);
}
man 'dup' e' dup2' –
'O_RDWR' è per il parametro' open' 'flags' non per' creat' 'mode'. –