dup2() [RESOLVIDO]

1. dup2() [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 20/06/2006 - 20:37h

Olá,

Estou aprendendo a usar a função dup2(). Mas tenho uma dúvida que não quer calar:

Quando faço o seguinte:

fd = socket(AF_INET, SOCK_STREAM, 0);
...
fd1 = accept(fd, (struct sockaddr*)&server, &t);
dup2(fd1, 0);
dup2(fd1, 1);
dup2(fd1, 2);
printf("Viva o linux");
...

Ai esse programa está escutando na porta TCP 23 (telnet). Quando digito:
#telnet <host>
aparece a mensagem:
"Viva o linux"
Bingo! é o que eu queria!

Mas se no fonte eu colocar o execve() ao invés de printf(), no telnet ele não me retorna um shell... Alguem sabe do porque?
Procurei no google igual um condenado, baixei mais de 10 exemplos, e nenhum funcionou... alguem ai por favor, me explique.. :)

Agradeço desde já,
Slackware_10


  


2. fechar fd's anteriores

Mário Melo Filho
MasterSavage

(usa Slackware)

Enviado em 21/06/2006 - 16:57h

tenta fechar os fd's 0,1,2


3. Re: dup2() [RESOLVIDO]

s0l1d_k3rn3l
s0l1d_k3rn3l

(usa Ubuntu)

Enviado em 08/01/2010 - 04:30h

Aew

vc tem que criar um processo filho para soltar o shell...

porque quando vc manda o execve() o seu programa executa o shell e fica no shell, sem retornar.

agora se vc criar o processo filho para soltar o shell, o processo pai não vai travar.

espero ter ajudado

flw






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts