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

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • Sarah's YouTube Channel

    Sarah's YouT

    27 Temmuz 2009