在Mac上启动新的终端窗口进程。

3

在Windows中,我可以使用CreateProcess(..., CREATE_NEW_CONSOLE, ...)来启动我的子进程(它是控制台应用程序,而不是GUI),并在一个新窗口中启动。在Mac OS上模拟这个的最简单方法是什么?

3个回答

9

open -a Terminal.app $(which program) 运行指定的程序并打开一个新的终端(假设你正在使用bash)。

你可以使用execve()(在fork()之后可能)在编译代码中实现相同的功能,而不需要了解任何Apple API(我想应该有一种正确的方法来实现这一点...)。

阅读man open

编辑:你不需要指定Terminal.app的路径(finder可以找到它)。


如果你正在运行X,那就更简单了:只需使用xterm -e program &命令生成一个新的xterm。

阅读man xterm(这会花费更长的时间...)。


我赞同Chris关于普通mac程序正确使用CLI(或不使用)的观点。在我的业务中,这是预期的,但典型的用户可能会感到{困惑|生气|不满}。


6
终端(Terminal.app,你指的是“控制台”)只是Mac OS X上的另一个用户级应用程序,而不是操作系统的功能。在Mac OS X上可用的各种API中没有直接的方法可以在新的终端窗口中启动可执行文件。
然而,我认为您可以像打开文档一样使用终端打开可执行文件-无论是在代码中还是作为用户-它将在一个新会话中运行。但是,这并不是正常的Mac OS X用户体验,通常不应在您要交付给最终用户的Mac软件中使用。
Mac OS X应用程序是应用程序。提供高级用户可以通过终端与之交互的工具是可以的,但终端绝不能代替真正的应用程序,当您向最终用户交付软件时。
我还要补充的是,如果您正在使用Cocoa,则可以使用NSTask类轻松启动和与另一个进程交互。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接