Macがネットワークにマウントされた共有を「取り出す」と、Macに次のメッセージが表示され、プロセスで開かれたファイルハンドルを閉じて共有を完全にアンマウントしようとします。私の質問は、これが正確にどのように達成されるかです。私の共有パスを使用して開いたファイルハンドルを列挙し、そのファイルハンドルを所有しているプロセスに何らかのシグナルを送信するようです。推測だけです。気になります。入力してください。 Apple Stack Exchangeにこの質問をしようとしましたが、実際にはこれがより一般的に適用されるUNIXの質問のようです。私が間違っていて、macOSにこれを行うための特別な/新しい方法があり、この問題を閉じて再開する必要がある場合はお知らせください。
編集:スクリーンショットを追加しました。
答え1
わかりませんが、ランダムUSBメモリとプログラムがありました。
$ df | grep Vol
/dev/disk1s2 12228 20 12208 1% 512 0 100% /Volumes/Firmware
$ perl -E 'say $$; chdir "/Volumes/Firmware" or die "nope $!"; sleep 9999'
66433
実際にポップアップを停止することはできますが、その前に他の端末で実行されているDTraceが提供するプロセスデバッグを実行する必要があります。
$ sudo dtruss -p 66433
...
その後、英語で強制的に取り出しボタン、数回のクリック、遅延、警告でテストプログラムが実行され続け、USBスティックがアンマウントされ、dtruss
何も表示されません。
...
^C
$ lsof -p 66433 | grep cwd
perl5.26 66433 jhqdoe cwd cwd|rtd info error: No such file or directory
$
したがって、少なくとも標準のUNIXプログラムでは、マウントポイントがその下から削除される以外は何も起こりません。次に、標準のUnixプログラムを使用して、マウントポイントに何かを書き込むかどうかをテストできます。
$ cat writeslow
#!/usr/bin/env perl
use 5.14.0;
use warnings;
open( my $fh, ">", "/Volumes/Firmware/mlatu" ) or die "nope $!";
while (1) {
syswrite( $fh, "mlatu\n" ) or warn "hmm $!";
sleep 3;
}
$ perl writeslow
他の場所では猫が現れていることを確認してください。 (より高いレベルの書き込み機能を使用している場合は、バッファリングが問題になる可能性があります。)
$ cat /Volumes/Firmware/mlatu
mlatu
mlatu
$
再度強制的に取り出すと、プログラムはそれを認識します(ただし、それが書かれているので実行され続けます)。
$ perl writeslow
hmm Input/output error at writeslow line 7.
hmm Input/output error at writeslow line 7.
そのため、Mac OSファイルハンドルが発生しますが、代わりにプロセスは引き続き実行され、どのような種類のエラーチェックを実行しても作成方法によっては失敗する可能性があります。
少なくとも標準のUnixがあり、標準のcwd
I / O呼び出しを使用する標準のUnixプログラムの場合、Appleフレームワークプログラムは少し異なる可能性がありますか? USBスティックを再マウントし、mlatu
次のコマンドを使用してファイルを開きますHex Fiend.app
。
$ open -a Hex\ Fiend /Volumes/Firmware/mlatu
$ lsof | grep mlatu
Hex\x20Fi 66642 jhqdoe 8r REG 1,5 216 7 /Volumes/Firmware/mlatu
$
(またはインストールされてTextEdit
いない場合はHex Fiend
他のものを使用してください)、強制ポップアップダンスをやり直してください。
$ screencapture -w error.png
$
これで、標準のUNIXプログラムとは異なるメッセージが表示され、強制的に削除するオプションはありません。
答え2
しかし、実際にはそうではありません。ファイルシステムをアンマウントするだけで、プログラムがファイルシステムに再度アクセスしようとするとエラーが発生します(問題を解決するためにスムーズに取り組んでいきます)。
外付けディスク(またはUSBペン)を物理的に取り外すのと大きく変わりません。ファイルシステムは使用できなくなりますが、初めて使用した後はプログラムで表示できます。