当前位置: 首页 > 面试题库 >

使用Swift执行'killall'时不允许进行操作

赵英资
2023-03-14
问题内容

我正在尝试创建一个菜单栏应用程序,以隐藏桌面图标以及希望进行其他各种操作,主要是为了更多地了解Swift,并且由于某种原因,我无法使其正常工作。当我运行该程序并单击菜单项之一时,什么也没有发生,并且我在控制台中收到此警告:

killall: warning: kill -TERM 15175: Operation not permitted

其他命令也可以,但是我尝试使用“ killall”的任何变体都会吐出类似上面的内容。目前,我的代码如下所示:

@discardableResult
func killStuff(_ args: String...) -> Int32 {
    let task = Process()
    let pipe = Pipe()

    task.launchPath = "/usr/bin/killall"
    task.arguments = args
    task.standardOutput = pipe
    task.standardError = pipe
    task.launch()
    task.waitUntilExit()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    if let output = String(data: data, encoding: .utf8) {
        print(output)
    }

    return task.terminationStatus
}

我已经和Google上找到的可接受的解决方案进行了多种尝试,但是我不断收到相同的“不允许操作”的信息。当我在Xcode游乐场中运行相同的代码时,它工作正常。

提前致谢!


问题答案:

Mac应用程序(如iOS应用程序)在默认情况下处于沙箱状态,这意味着它们对系统资源的访问非常有限。例如,仅允许它们读取和写入少量沙盒目录,并且usr/bin绝对不允许读取/写入/执行,也不允许您启动进程。

我记得,通过删除您的权利文件,您正在构建未沙盒化的应用程序。您可以从Xcode运行它,但是需要更改系统设置才能从查找程序运行它。



 类似资料:
  • 问题内容: 我正在尝试执行getPendingSalesOrderIDs()方法,该方法调用方法selectInAsending(…)。 但这显示了一个SQLException,它说java.sql.SQLException:在ResultSet关闭后不允许进行该操作 此处db.endSelect()将关闭所有连接。 我认为问题就在于此。 问题答案: 如果关闭ResultSet,为什么不删除它(在

  • 问题内容: 我跑了 运行该命令后,当尝试在Windows操作系统上运行任何npm命令时,我不断收到以下内容。 已从删除所有文件 那没起效。 有什么建议吗? 问题答案: 运行此命令是我的错误。 npm config设置前缀/ usr / local 路径不适用于Windows。此命令在以下位置更改了前缀变量 要访问此目录并对其进行更改,我需要以管理员身份运行cmd。 所以我做了: 以管理员身份运行c

  • 我在网上看到了很多答案,说要打击 必须使用命令,但是对该命令进行了十几次不同的尝试,结果都是类似的错误消息。 我使用Ubuntu 15.04的安装了PostgreSQL,但是PostgreSQL绝对不允许做任何事情。 我需要安装一些依赖关系或其他什么吗?

  • 问题内容: 我跑了 运行该命令后,当尝试在Windows OS上运行任何npm命令时,我不断收到以下内容。 已从删除所有文件 它不起作用。 有什么建议吗? 问题答案: 运行此命令是我的错误。 npm config设置前缀/ usr / local 路径不适用于Windows。此命令在以下位置更改了前缀变量 要访问此目录并对其进行更改,我需要以管理员身份运行cmd。 所以我做了: 以管理员身份运行c

  • 我跑 在运行该命令之后,当尝试在Windows操作系统上运行任何npm命令时,我不断得到以下信息。 已从中删除所有文件 它没有工作。 有什么建议吗?

  • 问题内容: 我被错误卡住了,这里的第42行是,请帮我解决这个问题,我在这个问题上待了几个小时。 这是我的代码: 问题答案: 一个对象只能有一个active对象,因此在执行时,第一个ResultSet()被关闭。 创建两个对象,一个用于,另一个用于。 引用以下内容的javadoc : 默认情况下,每个对象只能同时打开一个对象。因此,如果一个对象的读取与另一对象的读取交错,则每个对象必须已由不同的对象