Если я запускаю классическую вилочную бомбу bash:
:(){ :&:&};:
моя система через несколько секунд зависает .
Я пытался написать вилочную бомбу на C, здесьэто код:
#include <unistd.h>
int main( )
{
while(1) {
fork();
}
return 0;
}
Когда я запускаю его, система становится менее отзывчивой, но я могу убить этот процесс (даже через несколько минут), просто нажав ^C
.
.Приведенный выше код отличается от исходной бомбы-бомбы bash, которую я написал: это что-то вроде:
:( )
{
while true
do
:
done
}
(я не проверял это; не знаю, будет ли это зависать )система).
Поэтому я также попытался реализовать оригинальную версию;здесь код:
#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;
}
Но все равно ничего: я могу запустить его, а затем легко убить.Это не зависание моей системы.
Почему?
Что такого особенного в bash-вилочных бомбах?Это потому, что bash использует намного больше памяти / процессора?Поскольку процессы bash вызывают намного больше системных вызовов (например, для доступа к файловой системе), чем мои?