Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该强制卸载吗?_Java_Macos_Usb Drive_Unmount - Fatal编程技术网

Java 我应该强制卸载吗?

Java 我应该强制卸载吗?,java,macos,usb-drive,unmount,Java,Macos,Usb Drive,Unmount,我设计了一个程序来运行闪存驱动器。我的想法是在程序上放一个弹出按钮,这样你就可以轻松地“安全地”移除驱动器。但是,在Mac上,除非强制卸载,否则在应用程序仍在运行时无法卸载驱动器。我的问题是,我应该这样做吗 强制卸载不是类似于将驱动器拉出吗?使此选项易于使用是否安全 还有其他选择吗?我想您的应用程序是从磁盘本身运行的,是吗 您不应该强制弹出驱动器,而应该使用单独的进程。基本上,您编写一个小助手程序,等待主程序退出,然后弹出磁盘,最后退出。当您生成helper进程时,您必须“不等待”地执行此操作。

我设计了一个程序来运行闪存驱动器。我的想法是在程序上放一个弹出按钮,这样你就可以轻松地“安全地”移除驱动器。但是,在Mac上,除非强制卸载,否则在应用程序仍在运行时无法卸载驱动器。我的问题是,我应该这样做吗

强制卸载不是类似于将驱动器拉出吗?使此选项易于使用是否安全


还有其他选择吗?

我想您的应用程序是从磁盘本身运行的,是吗

您不应该强制弹出驱动器,而应该使用单独的进程。基本上,您编写一个小助手程序,等待主程序退出,然后弹出磁盘,最后退出。当您生成helper进程时,您必须“不等待”地执行此操作。术语可能会因您使用的语言(“在新线程中”或“”)而有所不同,但基本思想是,您必须启动一个helper程序来接管主程序,以便主程序可以退出


强制弹出是一种不好的方式-您无法确定驱动器是否正在使用。例如,在Mac电脑上,您可以随时对外部磁盘进行聚光灯读/写操作

您是正确的,应用程序从我希望弹出的驱动器运行。因此,基本上,我可以将一个临时脚本从主程序写入另一个驱动器,等待程序退出,然后弹出驱动器并删除程序。唯一的问题是,如果由于其他原因无法卸载驱动器,我的程序仍将退出。在尝试之前,是否有任何方法来确定是否可以卸载它?可能“lsof”命令有一个选项可以这样做。您还可以设置一个计时器,几秒钟后可以“放弃”或“强制弹出”。是的,我知道如何使用
lsof
。谢谢你的回答。它为我指明了正确的方向。我如何等待主程序退出?您可以将主程序的PID传递给帮助程序(甚至只使用主程序的名称),然后使用“ps”查看它是否仍在运行。