簡體   English   中英

在Mac上的新終端窗口中啟動進程

[英]Starting process in new Terminal window on Mac

在Windows上,我可以執行CreateProcess(..., CREATE_NEW_CONSOLE, ...) ,我的子進程(控制台應用程序,而不是GUI)將在新窗口中啟動。 在Mac OS上模擬此操作的最簡單方法是什么?

open -a Terminal.app $(which program)獲取一個運行指定程序的新終端(假設你正在使用bash)。

您可以使用execve() (可能在fork() )在編譯代碼中實現相同的功能,而無需了解任何Apple API(我想有一種正確的方法可以做到這一點......)。

man open

編輯:您不需要指定Terminal.app的路徑(查找器可以計算出來)。


如果你有X運行,它甚至更容易:只需用xterm -e program &生成一個新的xterm。

閱讀man xterm (這需要更長的時間......)。


對於普通的mac程序,我將第二個關於正確使用(或缺少)CLI的Chris。 在我的商業中,這是預期的,但典型的用戶將{confused | angry | unhappy}。

終端(Terminal.app,你所說的“控制台”)只是Mac OS X上的另一個用戶級應用程序,而不是操作系統的功能。 在Mac OS X上可用的各種API中沒有直接的方法可以在新的終端窗口中啟動可執行文件。

但是,我相信您可以使用終端打開可執行文件,就好像它是一個文檔 - 無論是代碼還是用戶 - 它將在新會話中運行。 然而,這是不是一個正常的Mac OS X的用戶體驗,一般不應在Mac軟件中使用你將交付給最終用戶。

Mac OS X應用程序是應用程序。 提供高級用戶可以通過終端進行交互的工具是很好的,但是在向最終用戶交付軟件時,終端絕不會塑造或形成真實應用程序的替代品。

我將補充一點,如果你使用Cocoa,你可以使用NSTask類來啟動並非常容易地與另一個進程交互。

Marc Liyanage用“term”整齊地做了這個,osascript告訴應用程序“終端”:
http://www.entropy.ch/blog/Mac+OS+X/2005/02/28/Terminal_tricks_8220_term_8221_and_8220_clone_8221.html

(關於“典型用戶”:有不同的宇宙,每個都發現其他宇宙奇怪。
來自Unix,我習慣於在任何可以使用文件的地方使用進程或“| pipe args”;
這極大地幫助了軟件組件。
但是打開-a只做文件 - 不同的宇宙)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM