小编Rit*_*ppe的帖子

为什么C-forkbombs不像bash那样工作?

如果我运行经典的bash forkbomb:

:(){ :&:&};:
Run Code Online (Sandbox Code Playgroud)

我的系统在几秒钟后挂起.

我试着用C编写一个forkbomb,这里是代码:

#include <unistd.h>

int main( )
{
    while(1) {
        fork();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,系统的响应速度会降低,但我可以在按下时杀死该过程(即使在几分钟后)^C.


上面的代码与我发布的原始bash forkbomb不同:它更像是:

:( )
{
    while true
    do
        :
    done
}
Run Code Online (Sandbox Code Playgroud)

(我没有测试它;不知道它是否挂起系统).

所以我也尝试实现原始版本; 这里的代码:

#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( …
Run Code Online (Sandbox Code Playgroud)

c c++ linux bash fork

51
推荐指数
1
解决办法
6767
查看次数

13
推荐指数
3
解决办法
2674
查看次数

标签 统计

c++ ×2

bash ×1

c ×1

fork ×1

linux ×1

multimethod ×1