693
You should (lemmy.ohaa.xyz)
submitted 9 months ago by Oha@lemmy.ohaa.xyz to c/linuxmemes@lemmy.world
you are viewing a single comment's thread
view the rest of the comments
[-] MonkderZweite@feddit.ch 30 points 9 months ago

How did this one work again? It was something with piping in a backgrounded subshell, right?

[-] huginn@feddit.it 135 points 9 months ago

It creates a new process that spins up 2 new instances of itself recursively.

https://itsfoss.com/fork-bomb/

here's a good explanation pulled from itsfoss.com

[-] KISSmyOS@lemmy.world 38 points 9 months ago

And on a modern Linux system, there's a limit to how many can run simultaneously, so while it will bog down your system, it won't crash it. (I'm running it right now)

[-] TheWoozy@lemmy.world 15 points 9 months ago
[-] cashews_best_nut@lemmy.world 10 points 9 months ago

I just did this in zsh and had to power off my machine. :(

[-] MonkderZweite@feddit.ch 8 points 9 months ago
[-] huginn@feddit.it 2 points 9 months ago

Not mine, grabbed it from the link, but it's a great explanation!

[-] AnarchistsForDemocracy@lemmy.world 7 points 9 months ago

does this constitute a quine? I wrote a couple quines using bash but nothing as elegant as this

[-] hikaru755@feddit.de 10 points 9 months ago* (last edited 9 months ago)

Maybe I'm missing something, but I think this doesn't print or otherwise reproduce its own source code, so it's not a quine afaict.

[-] MacNCheezus@lemmy.today 5 points 9 months ago

Correct. A quine is a program that prints its own source code. This one doesn't print anything.

[-] cupcakezealot@lemmy.blahaj.zone 4 points 9 months ago

tom jones lesser known single

[-] ook_the_librarian@lemmy.world 2 points 9 months ago

Goodness, gracious, fork bomb in bash

[-] hexabs@lemmy.world 2 points 9 months ago

Thanks friend. One question, is it necessary to pipe to itself? Wouldnt : & in the function body work with the same results?

[-] kablammy@sh.itjust.works 2 points 9 months ago* (last edited 9 months ago)

That would only add one extra process instance with each call. The pipe makes it add 2 extra processes with each call, making the number of processes grow exponentially instead of only linearly.

Edit: Also, Im not at a computer to test this, but since the child is forked in the background (due to &), the parent is free to exit at that point, so your version would probably just effectively have 1-2 processes at a time, although the last one would have a new pid each time, so it would be impossible to get the pid and then kill it before it has already replaced itself. The original has the same "feature", but with exponentially more to catch on each recursion. Each child would be reparented by pid 1, so you could kill them by killing pid 1 i guess (although you dont want to do that... and there would be a few you wouldn't catch because they weren't reparented yet)

[-] itslilith@lemmy.blahaj.zone 1 points 9 months ago* (last edited 9 months ago)

I may be wrong, but you could use : &;: & as well, but using the pipe reduces the amount of characters by two (or three, counting whitespace)

this post was submitted on 03 Dec 2023
693 points (95.3% liked)

linuxmemes

20680 readers
530 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS