Ich versuche, ein Childs-stdio/stderr nach Forking (Linux) zu erfassen. Ich habe mit sys_pipe und sys_dup2 ohne Glück herum gespielt. Die meisten Referenzen, die ich bezogen habe, beziehen sich auf die Arbeit des Kindes, aber da ich keine Kontrolle über das Kind habe, bin ich nicht sicher, was ich tun muss.capture childs stdio/stderr
Von dem, was ich bisher verstehe, muss ich ein Rohr öffnen und den Griff vor dem Gabeln duplizieren. Die Mutter dann versucht, das Rohr zu lesen, aber es ist nichts Rückkehr ... Der Code als solche ist ..
mov rax,22 ; open a pipe
mov rdi,h_Pipe
syscall
mov rax,33
mov rdi,1 ; duplicate stdout to pipe write
mov esi,dword[h_Pipe+4]
syscall
mov rax,33 ; duplicate stderr to pipe write
mov rdi,2
mov esi,dword[h_Pipe+4]
syscall
........ Gabel ... ...... .. warten, bis das Kind fertig ist
mov rax,0 ; Read the pipe
mov edi,dword[h_Pipe]
mov rsi,w_Buffer
mov rdx,256
syscall
Kann mir jemand helfen ??
Um calify .....
mov rax,57 ; fork
syscall
mov [CHILD_PID],rax
.child: cmp qword[CHILD_PID],0
je _CHILD
mov rax,3 ; Close
mov edi,dword[pipe_write]
syscall
mov r15d,dword[pipe_read]
jmp _RUN_EXIT
_CHILD: mov rax, 3; Schließen mov edi, dword [pipe_read] syscall
mov rax,33
mov rdi,1 ; duplicate stdout to pipe write
mov esi,dword[pipe_write]
syscall
mov rax,33 ; duplicate stderr to pipe write
mov rdi,2
mov esi,dword[pipe_write]
syscall
sys_execve
nachfolgende liest auf dem pipe_read Dateideskriptors gibt nichts zurück.
Sie haben die Kontrolle über das Kind, bis Sie 'exec *()' aufrufen. –