|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Ancora su programmazione UNIX / C
Salve raga
allora, compilando questo prog Codice:
#include <unistd.h>
int main (void)
{
printf("Prima frase\n");
execlp("echo", "echo", "Seconda frase", NULL);
exit(0); }
A schermo mi visualizza Prima frase Seconda frase mentre nel file txt viene memorizzato solo Seconda frase nonostante la printf abbia lo "\n" che dovrebbe rimandare a capo... Perchè? ![]() Thanks for help
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Help
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Scusami, ma per scrivere nel file come fai? non dovresti usare fprintf()?
poi, mi viene in mente un'altra cosa, che librerie di inclusione utilizzi?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Scherzi della bufferizzazione di stdout. Utilizza fflush(stdout) prima della exec.
__________________
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: Sep 2004
Messaggi: 3967
|
Quote:
Thx. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
E' standard
__________________
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 |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Quote:
Giusto per capire, però, potresti descrivermi quale sarebbe lo "scherzo" dello stdout? Thanks
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Le libc utilizzano una bufferizzazione su stdout, e non puoi fare assunzioni su quando il buffer viene svuotato. L'unica cosa certa è che verrà svuotato prima o poi, a meno che non lanci una exec. Arrivati alla exec, tutto quello che riguarda lo stream stdout del tuo processo e che ancora non è stato scritto, viene perso (il tuo "vecchio" processo viene immediatamente sostituito da quello "nuovo", senza possibilità di compiere altro).
In sostanza: non usare stdout se vuoi essere sicuro che qualcosa venga scritto nel punto stesso in cui lo scrivi. Usa la scrittura su stderr, oppure scrivi direttamente sul descrittore di stdout tramite dprintf(fileno(stdout), ...).
__________________
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 |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Quote:
Penso di aver capito
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:21.




















