|
|
|
![]() |
|
Strumenti |
![]() |
#1 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
[C] Errore nel runtime di Visual C++?
a proposito di dup e dup2 il man di Linux riporta tra le altre cose:
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
svelato l'arcano
![]() Quote:
|
|
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
i nomi in realtà sono portabili: non si è obbligati ad utilizzare "_dup2", esiste anche "dup2" (che è la stessa).
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
uhm non sono sicuro che dup2 faccia parte dello standard.. ho trovato solo dup per ora, ma aspetto conferme ufficiali
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Sì sono entrambe posix.
Non è un problema se sotto vc viene ritornato 0 in caso di successo con la dup2, in quanto il valore nel nuovo fd è...noto. Un veloce if (dup2(old_fd, new_fd)>=0) {} è perfettamente portabile tra posix e windows.
__________________
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 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
questo però non lo è:
Codice:
if (!dup2(oldfd, newfd)) { /* success */ } else { /* error */ } |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Anzi ora che ci penso tutte le volte che ho usato la dup2, ho controllato che non ritornasse valori <0...non avevo neanche notato che ritorna l'fd in caso di successo ![]()
__________________
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: 04:30.