- 104
- 3
- CPU
- i5-10500 3.2Ghz
- Dissipatore
- Non specificato
- Scheda Madre
- Non specificata
- HDD
- M.2 251GB e M.2 500GB
- RAM
- 16GB DDR4 2666mhz
- GPU
- Grafica Intel® UHD 630
- Audio
- Non specificata
- Monitor
- 1920x1080 27"
- PSU
- Non specificato
- Case
- Non specificato
- Periferiche
- Nono specificato
- Net
- Eolo
- OS
- Ubuntu
Salve, non riesco a risolvere un problema con la riderezione da standard output, mi trovo su sistema operativo Unix, quindi il file-descriptor di STD_IN = 0, STD_OUT = 1, STD_ERR = 2, in pratica ho provato a chiudere il descrittore associato allo standard output, per poi sovrascriverlo con quello del file in cui voglio scrivere, ma quando apro il file è vuoto.
CODICE:
Dovrebbe andare tutto bene, non vedo errori, però quando apro il file non trovo scritto il messaggio.
Perchè? help me
CODICE:
C:
/* gestione primitive basso livello*/
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
/*special file's descriptor --use it or constants in unistd.h-- */
#define STD_IN 0 /*standard input stream*/
#define STD_OUT 1 /*standard output stream*/
#define STD_ERR 2 /*standard output-error stream*/
int main(unsigned int num_of_args, char** args)
{
if(num_of_args != 3)
{
write(STD_ERR, "Few argouments.\nThe use = ./executable <message> <file>\n", 69);
return -1;
}
int file_des= open(args[2], O_CREAT, 0640);
if(file_des < 0)
{
write(STD_ERR, "Error, we couldn't open file.\n", 31);
return -1;
}
//chiudo il descrittore associato a STD_OUT
close(STD_OUT);
//copio il descrittore associato a fil_des sul primo descrittore disponibile(quindi STD_OUT)
dup(file_des);
write(STD_OUT, args[1], sizeof(args[1]));
close(file_des);
return 0;
}
Perchè? help me
Ultima modifica: