17Aug

Зашто не могу да мењам датотеке у Виндовс-у као што могу на Линуку и ОС Кс?

click fraud protection


Када користите Линук и ОС Кс, оперативни систем вас неће спречити да избришете датотеку која се тренутно користи у Виндовс-у, биће вам изричито забрањена.Оно што даје?Зашто можете уређивати и обрисати датотеке који се користе у системима из Уник-а, а не Виндовс-у?

Питање дана & амп;Сесија одговора долази нам захваљујући СуперУсер-у подскупу Стацк Екцханге-а, групације К & ама;

Питање

СуперУсер читач тхе.мидгет жели да зна зашто Линук и Виндовс третирају датотеке у употреби другачије:

Једна од ствари која ме је збунила откад сам почела да користим Линук је чињеница да вам омогућава да промените имедатотеку или чак обришите док се чита.Пример је како сам случајно покушао да обришем видео док је играо.Успео сам и био сам изненађен када сам сазнао да можете променити било шта у датотеци без бриге о томе да ли се тренутно користи или не.

Шта се дешава иза сцене и спречава му да безусловно брише ствари у Виндовс-у као што може у Линуку?

Одговорности

СуперУсер сарадници су осветлили ситуацију за тхе.мидгет.Изненађујуће пише:

instagram viewer

Кад год отворите или извршите датотеку у оперативном систему Виндовс, Виндовс закључава датотеку( ово је поједностављење, али обично је тачно). Датотека која је закључана процесом не може се избрисати док га тај процес не објави.То је разлог зашто сваки пут када се Виндовс мора ажурирати, потребно је да га поново покренете.

Са друге стране, оперативни системи попут Уника као што су Линук и Мац ОС Кс не закључавају датотеку, већ се налазе у сегментима дискета који су у основи.Ово може изгледати тривијално диференцирање, али то значи да се запис датотеке у садашњем садржају датотечног система може избрисати без ометања било ког програма који већ има отворен фајл.Тако можете избрисати датотеку док се још увек извршава или на други начин користи и наставиће да постоји на диску све док неки процес има отворену ручку за њега иако је њен унос у табелу датотека нестао.

Давид Сцхвартз проширује идеју и истиче како ствари треба бити идеално и како су у пракси:

Виндовс подразумева аутоматско, обавезно закључавање фајлова.УНИКС-ови су подразумевани ручном, кооперативном закључавањем датотеке.У оба случаја, подразумеване вредности могу бити преклапане, али у оба случаја обично нису.

Велики број старих Виндовс кода користи Ц / Ц ++ АПИ( функције попут фопен), а не изворни АПИ( функције попут ЦреатеФиле).Ц / Ц ++ АПИ не даје начин да одредите како ће обавезно закључавање функционисати, тако да добијете подразумеване вредности.Подразумевани "начин дељења" тежи да забрани "конфликтне" операције.Ако отворите датотеку за писање, претпоставља се да се пише конфликт, чак иако никада заправо не пишете у датотеку.Дитто за преименовање.

И, ево, ту је и горе.Осим отварања за читање или писање, Ц / Ц ++ АПИ не даје начин да одредите шта намеравате да урадите са датотеком.Према томе, АПИ мора да претпостави да ћете извршити било коју правну операцију.Пошто је закључавање обавезно, одбацивање које омогућава конфликтну операцију биће одбијено, чак и ако је код никад није имао намеру да изврши конфликтну операцију већ је само отворио датотеку за другу сврху.

Дакле, ако код користи Ц / Ц ++ АПИ или користи изворни АПИ без посебне размишљања о овим проблемима, они ће завршити спречавање максималног скупа могућих операција за сваку датотеку коју отварају и немогуће отворити датотеку осим уколико свака могућа операцијаони би могли да изводе на њој када је отворен неосвојен.

По мом мишљењу, Виндовс метода би радила много боље од УНИКС методе, ако је сваки програм изабрао своје моделе за дељење и отворио модове мудро и сложено поступање са случајевима неуспјеха.Међутим, УНИКС метод боље функционише ако код не узнемирава размишљање о овим проблемима.Нажалост, основни Ц / Ц ++ АПИ се не уклапа у Виндовс АПИ датотеку на начин који се бави дешавањима и конфликтно се отвара.Нето резултат је мало неуредан.

Тамо имате: два различита приступа у обради датотека доносе два различита резултата.

Имате ли нешто да додате објашњењу?Звучи у коментарима.Желите да прочитате више одговора од других корисничких корисника Стацк Екцханге?Овде погледајте комплетну тему.