SORU
22 Kasım 2010, PAZARTESİ


Neden C-forkbombs bash olanlar gibi't çalışmıyor?

Eğer klasik bash forkbomb kaçarsam:

:(){ :&:&};:

benim sistemkilitleniyorbirkaç saniye sonra.

Burada bir kod forkbomb yazmak için C çalıştım:

#include <unistd.h>

int main( )
{
    while(1) {
        fork();
    }
    return 0;
}

Bunu çalıştırdığımda sistem daha az duyarlı olur, ama bu süreç (hatta dakika sonra) ^C basarak öldürebilirim.


Yukarıdaki kod yazdım orijinal bash forkbomb farklıdır: böyle bir şey daha var:

:( )
{
    while true
    do
        :
    done
}

(Test etmedim, eğer öyle olsaydı, hiç bilmiyorumassistemi).

Ben de orijinal sürümü; burada kod uygulamak için çok çalıştı:

#include <unistd.h>

inline void colon( const char *path )
{
    pid_t pid = fork( );
    if( pid == 0 ) {
        execl( path, path, 0 );
    }
}

int main( int argc, char **argv )
{
    colon( argv[0] );
    colon( argv[0] );
    return 0;
}

Ama hala bir şey yok: çalıştırın ve kolayca öldür edebilirim. Değilasılıbenim sistem.


Neden?

Bash forkbombs bu kadar özel yapan ne? Bash/CPU çok daha fazla bellek kullandığından mı? Bash süreçleri çok daha fazla sistem çağrıları (erişim dosya sistemi gibi) benimkinden Ara çünkü?

CEVAP
22 Kasım 2010, PAZARTESİ


Bir C programıküçükcidden küçük. Buna ek olarak, () çatal'ing çok, çok verimli olduğu gibi program. Tercüman, Bash gibi, ancak, RAM kullanımı açısından çok daha pahalıdır, ve disk sürekli erişim gerekir.

Çok uzun süre çalıştırmayı deneyin. :)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013