635
submitted 3 months ago* (last edited 3 months ago) by 0x4E4F@sh.itjust.works to c/linuxmemes@lemmy.world

Though the Windows thing was really funny 😂.

you are viewing a single comment's thread
view the rest of the comments
[-] bort@sopuli.xyz 95 points 3 months ago

the linux-file-deletion is used as a example for good software design. It has a very simple interface with little room for error while doing exactly what the caller intended.

In John Ousterhout's "software design philosophy" a chapter is called "define errors out of existence". In windows "delete" is defined as "the file is gone from the HDD". So it must wait for all processes to release that file. In Linux "unlink" is defined as "the file can't be accessed anymore". So the file is gone from the filesystem immediately and existing file-handles from other processes will life on.

The trade-off here is: "more errors for the caller of delete" vs "more errors due to filehandles to dead files". And as it turns out, the former creates issues for both developers and for users, while the later creates virtually no errors in practice.

[-] lemmyvore@feddit.nl 116 points 3 months ago

doing exactly what the caller intended.

No, no. Exactly what the user told it to do. Not what they intended. There's a difference.

[-] hstde@feddit.de 36 points 3 months ago

Exactly type rm -rf / instead of rm -rf ./ and you ducked up. Well you messed up a long time ago by having privileges to delete everything, but then again, you are human, some mistakes will be made.

[-] taladar@sh.itjust.works 35 points 3 months ago

Deleting the current directory via ./ seems contrived since you would just use . or more likely the directory name from outside the directory. What does happen is rm -rf ${FOO}/ while ${FOO} is an empty string.

[-] qjkxbmwvz@startrek.website 19 points 3 months ago

Not sure if you're referencing the Steam incident, but Steam did exactly that: https://www.theregister.com/2015/01/17/scary_code_of_the_week_steam_cleans_linux_pcs/

[-] NeatNit@discuss.tchncs.de 18 points 3 months ago

Even so, . and / are right next to each other so it's a likely typo. You might press enter before you catch it.

[-] reinei@lemmy.world 1 points 3 months ago

${Insert meme of qwertz ganz not having that problem here}

[-] 0x4E4F@sh.itjust.works 1 points 3 months ago

The double check before you rm things 🤷.

[-] PrettyFlyForAFatGuy@feddit.uk 5 points 3 months ago

yup, did that one on a server at work. had to go cap in hand to my manager to get him to fix it

[-] Technofrood@feddit.uk 17 points 3 months ago

Don't modern versions of rm block calling on / unless you pass a separate flag?

[-] Ziglin@lemmy.world 4 points 3 months ago

Yup I think it's --preserve-root

[-] Semi_Hemi_Demigod@lemmy.world 3 points 3 months ago

Machines will always do what you tell them to do, as long as you do what they say.

[-] Sonotsugipaa@lemmy.dbzer0.com 11 points 3 months ago

do what they say

[-] hDGGgrLpg8nEucjxWnJz@lemmy.world 1 points 3 months ago

What do they say?

[-] lurker2718@lemmings.world 7 points 3 months ago

Yes, the file itself (so the data and inode) is not gone as long as the handles live on. Only the reference is gone. You canstill recover the file. https://superuser.com/questions/283102/how-to-recover-deleted-file-if-it-is-still-opened-by-some-process#600743

[-] 0x4E4F@sh.itjust.works 3 points 3 months ago

The trade-off here is: "more errors for the caller of delete" vs "more errors due to filehandles to dead files". And as it turns out, the former creates issues for both developers and for users, while the later creates virtually no errors in practice.

Tell that to my dded porn collection.

this post was submitted on 22 Mar 2024
635 points (95.9% liked)

linuxmemes

19706 readers
281 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