開いたファイルハンドルを使用してディレクトリの名前を変更することはできません。

開いたファイルハンドルを使用してディレクトリの名前を変更することはできません。

UbuntuサブシステムのWindows 10でディレクトリ内のファイルを開き、ファイルが開いている間にディレクトリ名を変更しようとすると、それはできません。

例:

$mkdir demo
$touch demo/test.txt
$CtlZ
$[2]+  Stopped                 vim demo/test.txt
$mv demo demo100
mv: cannot move 'demo' to 'demo100': Permission denied

これでファイルを閉じて名前を変更できます。

$mv demo demo100
$ls demo100
test.txt

これは予期しない動作のようです。通常のUbuntuシステムで同じテストを実行すると、問題なくファイル名を変更できました。この問題の原因に関するアイデアはありますか?

ベストアンサー1

はい、これは通常のWindowsの動作です。 Windows でファイルを開くと、ファイルシステムでそのファイルが効果的にロックされ、移動が防止されます。

WSLは仮想マシンではないことを理解することが重要です。 Posixなどのウィンドウへのアクセスを許可するウィンドウの上部(薄い)レイヤーです。したがって、WSLでファイルを開くと、Windowsの一般的な規則に従って実際にWindowsでファイルを開くことになります。

読む:

https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux

概要

WSLは、Ubuntu、openSUSE、SUSE Linux Enterprise Server、Debian、Kali LinuxなどのGNUユーザースペースを実行できるMicrosoftによって開発されたLinux互換カーネルインタフェース(Linuxカーネルコードを除く)を提供します。

もっと遠く

ハードウェアおよびファイルシステムへのアクセス

coLinuxなどの他のプロジェクトとは異なり、ハードウェアエミュレーション/仮想化がないため、WSLはホストファイルシステムを直接使用します。

おすすめ記事