• KISSmyOS@lemmy.world
      link
      fedilink
      arrow-up
      37
      ·
      1 year 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)

    • hexabs@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year 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
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 year 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
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year 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)