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

  • itfigueres

    itfigueres

    12 EKİM 2013
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • Pituvision

    Pituvision

    11 Mart 2006