Difference between revisions of "Talk:1888: Still in Use"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
Line 3: Line 3:
 
:Note: Java adopted garbage collection over 30 years after it had been used in Lisp. I would question the use of 'prominently belongs'. Any user of Gnu Emacs will be aware of what happens when garbage collection hits unexpectedly... [[Special:Contributions/141.101.98.112|141.101.98.112]] 16:13, 11 September 2017 (UTC)
 
:Note: Java adopted garbage collection over 30 years after it had been used in Lisp. I would question the use of 'prominently belongs'. Any user of Gnu Emacs will be aware of what happens when garbage collection hits unexpectedly... [[Special:Contributions/141.101.98.112|141.101.98.112]] 16:13, 11 September 2017 (UTC)
 
::I have to admit that my first comment doesn't belong to the content of this comic. But, even when you are right (Garbage collection was invented by John McCarthy around 1959 to simplify manual memory management in Lisp.), who really uses Lisp compared to Java? So when trying to explain the GC I would use the most common language using this feature and compare it to the vast majority of other common languages like C, Delphi/Pascal, or scripting languages like Perl or PHP. And we can lisp, sorry list, many more languages in this latter context. In the middle there are object-oriented programming languages without GC like C++, a destructor must be explicitly called which than removes everything belonging to a particular instance on an object. --[[User:Dgbrt|Dgbrt]] ([[User talk:Dgbrt|talk]]) 20:47, 11 September 2017 (UTC)
 
::I have to admit that my first comment doesn't belong to the content of this comic. But, even when you are right (Garbage collection was invented by John McCarthy around 1959 to simplify manual memory management in Lisp.), who really uses Lisp compared to Java? So when trying to explain the GC I would use the most common language using this feature and compare it to the vast majority of other common languages like C, Delphi/Pascal, or scripting languages like Perl or PHP. And we can lisp, sorry list, many more languages in this latter context. In the middle there are object-oriented programming languages without GC like C++, a destructor must be explicitly called which than removes everything belonging to a particular instance on an object. --[[User:Dgbrt|Dgbrt]] ([[User talk:Dgbrt|talk]]) 20:47, 11 September 2017 (UTC)
 +
:::Both Perl and PHP are using garbage collection. So do Python, Ruby and Javascript. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 23:49, 11 September 2017 (UTC)
  
 
Seams like a pretty clear reference to not being able to empty the computers Trash because files are in use.  Normally files in the Trash can't be opened, and files can't be moved to the Trash if opened but weird things can happen.  The real rub here is that the computer does know '''exactly''' what process has each file open and is intentionally designed and told not to tell you the user the remedy that it already knows nor to show an option to remedy the problem itself leaving you in the lurch. [[Special:Contributions/172.68.206.58|172.68.206.58]] 15:37, 11 September 2017 (UTC)
 
Seams like a pretty clear reference to not being able to empty the computers Trash because files are in use.  Normally files in the Trash can't be opened, and files can't be moved to the Trash if opened but weird things can happen.  The real rub here is that the computer does know '''exactly''' what process has each file open and is intentionally designed and told not to tell you the user the remedy that it already knows nor to show an option to remedy the problem itself leaving you in the lurch. [[Special:Contributions/172.68.206.58|172.68.206.58]] 15:37, 11 September 2017 (UTC)
Line 17: Line 18:
  
 
*More specific, Windows tracks open files through their pathname, linux tracks open files through their numeric ID.  This means that you could create file A, open it, delete the file, create another file B with the same filename, open it, delete the file, create another file C with the same filename, open it, delete the file.  Those three files would still be present on the disk, each of the apps that has the file open would see different contents (which they could write to and change), but you would never see any of the files through a directory listing (but it would take up disk space until the files were closed).  I believe linux viruses delete themselves to make them more difficult to discover, this also explains why linux system updates don't require rebooting the computer afterwards (although if you just changed the system kernel it's likely recommended)[[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 18:26, 11 September 2017 (UTC)
 
*More specific, Windows tracks open files through their pathname, linux tracks open files through their numeric ID.  This means that you could create file A, open it, delete the file, create another file B with the same filename, open it, delete the file, create another file C with the same filename, open it, delete the file.  Those three files would still be present on the disk, each of the apps that has the file open would see different contents (which they could write to and change), but you would never see any of the files through a directory listing (but it would take up disk space until the files were closed).  I believe linux viruses delete themselves to make them more difficult to discover, this also explains why linux system updates don't require rebooting the computer afterwards (although if you just changed the system kernel it's likely recommended)[[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 18:26, 11 September 2017 (UTC)
 +
:Note that the numeric ID is called inode - and yes, it's better behaviour for updating. Regarding viruses, well they may do it but it would be bad strategy, as it would remove them on reboot and make them still visible in commands as lsof. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 23:49, 11 September 2017 (UTC)
  
 
No one though about Docker? That was lit(t)erally my first thought: He must be talking about Docker. --[[User:AndreKR|AndreKR]] ([[User talk:AndreKR|talk]]) 18:30, 11 September 2017 (UTC)
 
No one though about Docker? That was lit(t)erally my first thought: He must be talking about Docker. --[[User:AndreKR|AndreKR]] ([[User talk:AndreKR|talk]]) 18:30, 11 September 2017 (UTC)
Line 35: Line 37:
  
 
This is NOT a Windows-only-problem. The very same happens if you try to u(n)mount a partition in Linux. It will fail if a program still has a file on this filesystem open, but Linux does NOT tell you which file is open – you have to use other programs like ''lsof'' to find out. --[[User:DaB.|DaB.]] ([[User talk:DaB.|talk]]) 23:28, 11 September 2017 (UTC)
 
This is NOT a Windows-only-problem. The very same happens if you try to u(n)mount a partition in Linux. It will fail if a program still has a file on this filesystem open, but Linux does NOT tell you which file is open – you have to use other programs like ''lsof'' to find out. --[[User:DaB.|DaB.]] ([[User talk:DaB.|talk]]) 23:28, 11 September 2017 (UTC)
 +
:Asynchronous deletion is nowhere near as useful as the ability to just remove the file and keep just the inode open. But you are right that while Linux doesn't have this problem with files, it does have them with filesystems (partitions) and it can be very annoying. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 23:49, 11 September 2017 (UTC)

Revision as of 23:49, 11 September 2017

Just for all writers: The Garbage collection prominently belongs to Java. Microsoft had adopted this only in C# and it's NOT used in file systems.--Dgbrt (talk) 14:47, 11 September 2017 (UTC) EDIT by --Dgbrt (talk) 20:47, 11 September 2017 (UTC)

Note: Java adopted garbage collection over 30 years after it had been used in Lisp. I would question the use of 'prominently belongs'. Any user of Gnu Emacs will be aware of what happens when garbage collection hits unexpectedly... 141.101.98.112 16:13, 11 September 2017 (UTC)
I have to admit that my first comment doesn't belong to the content of this comic. But, even when you are right (Garbage collection was invented by John McCarthy around 1959 to simplify manual memory management in Lisp.), who really uses Lisp compared to Java? So when trying to explain the GC I would use the most common language using this feature and compare it to the vast majority of other common languages like C, Delphi/Pascal, or scripting languages like Perl or PHP. And we can lisp, sorry list, many more languages in this latter context. In the middle there are object-oriented programming languages without GC like C++, a destructor must be explicitly called which than removes everything belonging to a particular instance on an object. --Dgbrt (talk) 20:47, 11 September 2017 (UTC)
Both Perl and PHP are using garbage collection. So do Python, Ruby and Javascript. -- Hkmaly (talk) 23:49, 11 September 2017 (UTC)

Seams like a pretty clear reference to not being able to empty the computers Trash because files are in use. Normally files in the Trash can't be opened, and files can't be moved to the Trash if opened but weird things can happen. The real rub here is that the computer does know exactly what process has each file open and is intentionally designed and told not to tell you the user the remedy that it already knows nor to show an option to remedy the problem itself leaving you in the lurch. 172.68.206.58 15:37, 11 September 2017 (UTC)

It could be that another user is the one that used the paper towel last. I was actually running into an issue where I couldn't delete a file from a network share that I had used last. The dialog would tell me what program was still using it (Source Tree, which had unceremoniously crashed and didn't close out properly) but my coworker simply got the "Is in use by another program" message. Bpendragon (talk) 15:43, 11 September 2017 (UTC)

I've also come across the issue where the process using the file is the file manager utility itself; I opened the trash to see what was in there, it started trying to make preview images of all the items, and of course when you close the window it doesn't release whatever filehandle it was currently trying to make a preview for. -- Angel (talk) 16:12, 11 September 2017 (UTC)

You could always power the house down and restart it! 162.158.78.28 16:37, 11 September 2017 (UTC)

Part of the joke is how unhelpful windows tend(ed/s) to be in helping you identify the application that is still hanging onto the file.--Henke37 (talk) 17:08, 11 September 2017 (UTC)

This is problem only on MS Windows, where most file-access is blocking; Linux allows deleting file even if some process is accessing it - said process would see old version of the file, while all other would see it deleted. This has its own problems (you delete files, but you don't recover free space), but I think it is less annoying. --JakubNarebski (talk) 18:03, 11 September 2017 (UTC)

  • More specific, Windows tracks open files through their pathname, linux tracks open files through their numeric ID. This means that you could create file A, open it, delete the file, create another file B with the same filename, open it, delete the file, create another file C with the same filename, open it, delete the file. Those three files would still be present on the disk, each of the apps that has the file open would see different contents (which they could write to and change), but you would never see any of the files through a directory listing (but it would take up disk space until the files were closed). I believe linux viruses delete themselves to make them more difficult to discover, this also explains why linux system updates don't require rebooting the computer afterwards (although if you just changed the system kernel it's likely recommended)Odysseus654 (talk) 18:26, 11 September 2017 (UTC)
Note that the numeric ID is called inode - and yes, it's better behaviour for updating. Regarding viruses, well they may do it but it would be bad strategy, as it would remove them on reboot and make them still visible in commands as lsof. -- Hkmaly (talk) 23:49, 11 September 2017 (UTC)

No one though about Docker? That was lit(t)erally my first thought: He must be talking about Docker. --AndreKR (talk) 18:30, 11 September 2017 (UTC)

I figured this was about program removal (i.e. "uninstall"). Sometimes one file is still in use (sometimes the program's folder instead of a file), but the rest are deleted as expected. -- BigMal // 108.162.216.166 18:58, 11 September 2017 (UTC)

"...However, the operating system gives no indication of which application(s) have open file(s)..." Which operating systems do this? (Xubuntu tells you which application(s) are the culprit(s). I gather Windows doesn't. OS/X? Other Linuxes? Maybe just say "some operating systems give"? Bill Gray1 (talk) 19:41, 11 September 2017 (UTC)

This is one of the most annoying things windows does, and a huge contribution to why I use macOS and hate Windows! It seems that just about every time I try to do anything significant on windows, I run into this or a similarly frustrating inane problem I never have with a Mac! The one I hate most is when I can't delete an empty folder because either it or a hidden thumbs.db in it is "in use" by the exact same app (windows explorer) as I'm trying to use to delete it! That this is still a problem with a commercially successful OS made in the 21st century is unbelievable to me! PotatoGod (talk) 22:09, 11 September 2017 (UTC)

Agreed, one of the worst features on windowsDontknow (talk) 23:39, 11 September 2017 (UTC)

I removed the irrelevant commentary that Windows doesn't use the Unix inode data structures, as the object manager provides the functionality allowing file locks to be made, queried, and released. http://m.windowsitpro.com/systems-management/inside-nts-object-manager

Windows also support asynchronous deletion or moving of in-use files. https://docs.microsoft.com/en-us/sysinternals/downloads/movefile

[Comet] 23:01, 11 September 2017 (UTC)

This is NOT a Windows-only-problem. The very same happens if you try to u(n)mount a partition in Linux. It will fail if a program still has a file on this filesystem open, but Linux does NOT tell you which file is open – you have to use other programs like lsof to find out. --DaB. (talk) 23:28, 11 September 2017 (UTC)

Asynchronous deletion is nowhere near as useful as the ability to just remove the file and keep just the inode open. But you are right that while Linux doesn't have this problem with files, it does have them with filesystems (partitions) and it can be very annoying. -- Hkmaly (talk) 23:49, 11 September 2017 (UTC)