Discussione: [assembly] syscall
View Single Post
Old 13-02-2010, 00:29   #8
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
ok.... quindi dovrei aver risolto....

mi rimane un solo problema... la syscall dup2()... che non so perchè non ne vuole sapere di andare...

ma non vedo proprio che ci può essere di sbagliato...

questo è il pezzo di codice che mi da problemi:
Codice:
[ .............]
       int $0x80		// accept()

	xorl %ebx, %ebx		// effettuo un controllo sul risultato di accept()
	cmpl %eax, %ebx
	jb end
	movl %eax, %ebx         // Nuovo socket, sarà il 1° argomento di dup2

	xorl %eax, %eax
        movl %edx, %ebx    	// socket
        movb $6, %al	     	// Sistemo 6 (_NR_close) in AL
        int $0x80		// close()

	xorl %eax, %eax		// Azzero EAX
	xorl %ecx, %ecx		// Azzero ECX, il 2° argomento di dup2 (stdin)
	movb $0x3f, %al		// Sistemo 63 (_NR_dup2) in AL
	int $0x80		// dup2()

	xorl %eax, %eax		// Azzero EAX
	incl %ecx		// ora stdout
	movb $0x3f, %al		// Sistemo 63 (_NR_dup2) in AL
	int $0x80		// dup2()

	xorl %eax, %eax		// Azzero EAX
	incl %ecx		// ora stderr
	movb $0x3f, %al		// Sistemo 63 (_NR_dup2) in AL
	int $0x80		// dup2()

	xorl %eax, %eax		//Azzero eax
[......................]
se bypasso le chiamate a dup2 il programma funziona, altrimenti termina inspiegabilmente.... c'è qualcosa che mi impedisce di effettuare queste chiamate?

ci sto impazzendo grazie mille!
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso