非常具體的問題:我寫一個(Python)的腳本,應該在運行Mac應用程序作爲父腳本
- 生成的臨時文件。
- 啓動圖像查看器。
- 關閉查看器後,刪除tmp文件。
在linux下,這將很好地工作,因爲我開在Python子進程,並運行以下
eog myimg.png; rm myimg.png
然而,這個故事是在Mac上的不同。 open
命令在不同的進程中啓動。如果我使用/Applications/Preview.app/MacOS/Preview
,我會遇到一個奇怪的權限問題。如果我殺死我的腳本,並保留該文件,然後啓動Terminal.app,則此操作依然存在:
運行open myimg.png
按預期工作。運行/Applications/Preview.app/MacOS/Preview myimg.png
獲得相同的權限錯誤。 (意思是說 - 它實際上不是文件權限錯誤)。而FWIW,無論如何這個文件是444。
我的猜測是,打開命令運行來自不同用戶的應用程序,它允許訪問我的用戶沒有使用的父目錄,類似的東西。
無論如何,任何人都知道到底發生了什麼,以及可行的解決方案是什麼?謝謝!
編輯 當前的代碼
name = '/var/folders/qy/w9zq1h3d22ndc2d_7hgwj2zm0000gn/T/tmpDHRg2T.png'
viewer_command = 'open'
subprocess.Popen(viewer_command + ' ' + name +' ; rm ' + name, shell=True)
您需要區分線程和進程。使用'open'(Mac命令)意味着單獨的進程,而不僅僅是一個單獨的線程。線程在單個進程內工作,使用單個二進制文件。你所描述的是多個進程 - 在Linux和Mac上。你說「一個奇怪的權限問題」 - 這是什麼意思?信息到底是什麼? –
謝謝,你對線程/進程是正確的。修正了。錯誤是「文件」tmp5ZKcAr。PNG「無法打開,因爲您沒有權限查看它。要查看或更改權限,請在Finder中選擇該項目,然後選擇「文件」>「獲取信息」。 –
不完全確定要查詢的內容,而是要查找「-W」? '-W導致打開,等待其打開的應用程序(或已打開的應用程序)退出。與-n標誌一起使用允許打開 函數作爲$ EDITOR環境變量的適當應用程序。「# – Kevin