如何获取 NSRunningApplication 的参数?

2024-01-09

如何获取启动期间使用的参数列表NSRunningApplication,类似于我跑步时看到的ps aux:

let workspace = NSWorkspace.shared
let applications = workspace.runningApplications

for application in applications {
    // how do I get arguments that were used during application launch?
}

“ps”工具使用sysctl() with KERN_PROCARGS2获取正在运行的进程的参数。以下是尝试翻译代码adv_cmds-153/ps/print.c https://github.com/apple-oss-distributions/adv_cmds/blob/adv_cmds-153/ps/print.c到斯威夫特。该文件还包含原始参数空间的内存布局的文档,并解释了如何在该内存中定位字符串参数。

func processArguments(pid: pid_t) -> [String]? {
    
    // Determine space for arguments:
    var name : [CInt] = [ CTL_KERN, KERN_PROCARGS2, pid ]
    var length: size_t = 0
    if sysctl(&name, CUnsignedInt(name.count), nil, &length, nil, 0) == -1 {
        return nil
    }
    
    // Get raw arguments:
    var buffer = [CChar](repeating: 0, count: length)
    if sysctl(&name, CUnsignedInt(name.count), &buffer, &length, nil, 0) == -1 {
        return nil
    }
    
    // There should be at least the space for the argument count:
    var argc : CInt = 0
    if length < MemoryLayout.size(ofValue: argc) {
        return nil
    }
    
    var argv: [String] = []
    
    buffer.withUnsafeBufferPointer { bp in
        
        // Get argc:
        memcpy(&argc, bp.baseAddress, MemoryLayout.size(ofValue: argc))
        var pos = MemoryLayout.size(ofValue: argc)
        
        // Skip the saved exec_path.
        while pos < bp.count && bp[pos] != 0 {
            pos += 1
        }
        if pos == bp.count {
            return
        }
        
        // Skip trailing '\0' characters.
        while pos < bp.count && bp[pos] == 0 {
            pos += 1
        }
        if pos == bp.count {
            return
        }
        
        // Iterate through the '\0'-terminated strings.
        for _ in 0..<argc {
            let start = bp.baseAddress! + pos
            while pos < bp.count && bp[pos] != 0 {
                pos += 1
            }
            if pos == bp.count {
                return
            }
            argv.append(String(cString: start))
            pos += 1
        }
    }
    
    return argv.count == argc ? argv : nil
}

只有一个简单的错误处理:如果出现任何问题,函数将返回nil.

举个例子NSRunningApplication然后你可以打电话

processArguments(pid: application.processIdentifier)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 NSRunningApplication 的参数? 的相关文章

  • 在模拟器/预览版上运行的 SwiftUI:切换不起作用,控制台日志:“无效模式‘kCFRunLoopCommonModes’”

    更新 这是一条红鲱鱼 所以我最初的问题是问如何禁用导航链接 并且仅在两个链接时才启用Toggle影响两个 State var isXYZToggleOn Bool属性都是true 这一直有效 我第一次尝试使用 disabled hasAgr
  • 如何检测在 MapView 中选择了哪个注释

    我在地图内做了一些注释 当我点击它们时 我会看到一些信息 并且有一个打开地图的按钮 并且使用我无法接受的正确信息应该可以绘制出我的路线 这是我的代码 我有 2 个双精度数组用于我的经纬度 我从查询中填充了它们 var lat Double
  • WKWebView不加载https URL?

    我有一个 WKWebView 应该加载以下网址 https buchung salonmeister de place offer details page id 907599 venueId 301655 她是我使用的代码 import
  • Swift - 如何复制包含引用类型的数组

    我正在尝试复制数组及其值 为什么两个数组都引用同一个变量 您可以在 Playground 中尝试此操作 var view UIView view tag 1 var a UIView var b UIView a append view b
  • 如何在 RxSwift 中取消订阅 Observable?

    我想在 RxSwift 中取消订阅 Observable 为了做到这一点 我曾经将 Disposable 设置为 nil 但在我看来 更新到 RxSwift 3 0 0 beta 2 后 这个技巧不起作用 我无法取消订阅 Observabl
  • Mac OS X - 使钥匙串证书可供 Atlassian Bamboo 使用

    我有一个构建包的 Bamboo 计划 我想用我的开发者证书签署该包 在我的构建脚本中 我有这个 productsign sign Name of my certificate input pkg output pkg 从命令行运行此脚本可以
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • Swift:配对数组元素的最佳方法是什么

    我遇到了一个需要成对迭代数组的问题 最好的方法是什么 或者 作为替代方案 将数组转换为对数组 然后可以正常迭代 的最佳方法是什么 这是我得到的最好的 这个需要output成为一个var 而且它并不是很漂亮 有没有更好的办法 let inpu
  • 在 Mac 上开发和测试 ASP.NET 的应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我开始学习一些asp net 所以我正在寻找一个使用mac 开发asp net 的应用程序 我知道 D
  • 如何在 Mac 上禁用屏幕保护程序/显示器睡眠

    有没有办法用可可禁用屏幕保护程序和显示器睡眠 OSX 10 8 中已弃用 UpdateSystemActivity OverallAct 的使用 现在推荐的方法是通过以下调用来阻止它 IOPMAssertionCreateWithName
  • Xcode - 调试视图层次结构

    我正在尝试调试应用程序的视图层次结构 Xcode 窗口的左侧窗格中出现了一个紫色的小方块 请参见屏幕截图 知道这个问题可能是什么吗 好吧 我找到了这个问题的根源 这是一个约束问题
  • Twitter api 文本字段值被截断

    为什么文本字段值被截断以及如何获得完整的值 截至目前 我正在尝试获取如下所示的文本字段值 do if let responseObject try NSJSONSerialization JSONObjectWithData respons
  • Android Studio 无法运行 Xcode 模拟器

    我正在尝试使用 Xcode iPhone 模拟器模拟我的 Flutter 应用程序 但收到此错误 在升级 Android Studio 和 Xcode 之前 它运行良好 Launching lib main dart on iPhone X
  • 从 UTC 转换为本地时区给出错误结果

    背景我需要将格式为 HH mm 的时间字符串从 UTC 转换为本地时区 例如 如果 UTC 时间为 09 00 则当地时间 斯德哥尔摩 欧洲 应提前两个小时 Problem当我将 09 00 UTC 转换为斯德哥尔摩 欧洲时间时 我得到 1
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • 如何在 Swift 泛型中说“同一类”

    如果 Swift 泛型类型约束是协议名称 我可以要求受该协议约束的两种类型为同一类型 例如 protocol Flier struct Bird Flier struct Insect Flier func flockTwoTogether
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • iOS 自定义滑块删除两端的最小和最大空间

    我正在尝试使用自定义滑块 class MySlider UISlider override func trackRect forBounds bounds CGRect gt CGRect let customBounds CGRect o
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它

随机推荐

  • 使用 Javascript Regex 将字符换行到字符串中,不包括链接标签

    EDIT 这就是我必须做的 想象一下 如果我有一个文本 里面有一些 html 标签 它仍然是一个字符串 var string p Hello my name is Mauricio p p Hi my name is Patricia p
  • 在程序中替换 if..else if..else 树的最佳方法是什么?

    这个问题是由我最近开始经常看到的事情引起的 if else if else结构 虽然它很简单并且有它的用途 但它的一些东西一遍又一遍地告诉我 它可以被更细粒度 更优雅并且通常更容易保持最新的东西所取代 尽可能具体 这就是我的意思 if i
  • 下拉android时SwipeRefreshLayout加载程序不会上升

    我已经将 SwipeRefreshLayout 与 recyclerview 一起使用 它在所有 android 版本中工作正常 但在 Kitkat 中 当我下拉时 SwipeRefreshLayout 加载程序不会上升 也不会刷新 rec
  • ggplot2 中的圆形直方图,条形间距均匀且没有多余的线条

    我正在努力在 ggplot2 中制作一个圆形直方图 以显示 24 小时内呼叫数量的变化情况 我的数据集从 0 开始到 23 每小时的调用次数 df data frame xvar 0 23 y c 468 520 459 256 397 2
  • 实体框架:重新查找最近添加到上下文中的对象

    我正在使用实体框架 并且在 重新查找 我刚刚创建的对象时遇到问题 基本上是这样的 string theId someId private void Test using MyEntities entities new MyEntities
  • 表达 res.download()

    我不知道为什么会这样 但这真的很烦人 我预计该文件将根据快速文档 https expressjs com en api html res download 我有下一个代码 in react App js download gt const
  • 在 PowerShell 中打开所选应用程序中的文件

    我想使用 PowerShell 中的 cmdln 和特定应用程序打开一个文件 就我而言 我有一个文件scripts js我想打开它Notepad 但通常会定期开放notepad exe如果我这样做 Invoke Item scripts j
  • 基类不包含无参数构造函数?

    我通过删除一些空的构造函数来使我的构造函数更加严格 我对继承还很陌生 并且对我得到的错误感到困惑 基类不包含无参数构造函数 如何让 A2 继承 A 而 A 中没有空构造函数 另外 根据我个人的理解 为什么 A2 需要 A 的空构造函数 Cl
  • 在 jspdf.debug.js 中哪里可以更改默认的 pdf 页面宽度和字体大小?

    我需要更改默认 pdf 页面宽度和字体大小在 jspdf debug js 中 在哪里以及如何更改 jspdf debug js 中的默认值 除了使用默认格式之一之外 您还可以以指定的单位指定任何大小 例如 Document of 210m
  • “!!”有什么用? (否定两次)? [复制]

    这个问题在这里已经有答案了 可能的重复 C 代码中的双重否定 https stackoverflow com questions 248693 double negation in c code 比方说 bool var true 它将为变
  • 什么是http多部分请求?

    我编写iPhone应用程序已经有一段时间了 向服务器发送数据 接收数据 通过HTTP协议 没有考虑太多 大多数情况下 我理论上熟悉流程 但我不太熟悉的部分是 HTTP 多部分请求 我知道它的基本结构 但我不知道它的核心 似乎每当我发送非纯文
  • Android Bitmap保存没有透明区域

    我想保存没有透明区域的位图 位图具有大的透明像素 所以我想删除它 我怎样才能做到这一点 我无法添加图片 所以用符号解释 我不想裁剪功能 我希望使用过滤器 透明区域 裁剪这个 要查找位图的非透明区域 请在 x 和 y 中迭代位图并查找非透明区
  • 游戏开发中处理战斗效果

    我正在尝试为我正在修改的个人项目的游戏制定高级技术规范 这是一款可能最接近的回合制冒险游戏Archon http en wikipedia org wiki Archon computer game 就我想做的事情而言 我遇到的麻烦是概念化
  • webkit 浏览器获取 elements.width() 错误

    我正在尝试获得容器的正确计算宽度 所有浏览器都能正确计算出宽度 甚至 IE 但令人惊讶的是 Chrome 和 webKit 浏览器也获得了有线号码 我正在尝试获取总宽度 li 包括它的边框和填充 它的右边距 然后乘以长度 li li 以获得
  • 使用 UIDocumentPickerViewController 在 Swift 中导入文本

    我目前正在学习 iOS 开发课程 作为我项目的一部分 我的任务是使用UIDocumentPickerViewController导入文本 我发现的每个例子要么 a 用 Objective C 编写 要么 b 用于导入UIImage file
  • 在 Clojure 中将“map”与不同大小的集合一起使用

    我想了解在 clojure 中操作不同大小的集合的惯用方式 有没有办法告诉函数 map 用一些默认值填充集合的其余部分 举个例子 假设我有 3 个向量 def x 1 2 3 4 def y 1 2 3 4 5 def z 1 2 3 4
  • 根据选择器中选择的应用程序为 ACTION_SEND 意图设置不同的文本[重复]

    这个问题在这里已经有答案了 如何设置不同的内容 不同的文本 图像 无图像 ACTION SEND意图 基本上我想要电子邮件的长文本和图像 Facebook 的长文本和 Twitter 的短文本 我知道这个问题 https stackover
  • Excel:如果满足条件,则从范围内进行 TEXTJOIN

    我在 Excel 中遇到了一个问题 但我不知道如何解决 上图中有两个表 表 1 列出了个人之间交换的礼物 并标明了赠送者和接受者 我使用 礼物 和 人 是为了更容易在这里讨论 实际上 这些是交换控制信号的设备 这张表可能有数百行长 表 2
  • 正则表达式查找仅包含一个斜杠的 URL

    我正在测试一个网站 需要使用正则表达式来定位我想要包含在测试中的页面 我将仅定位 URL 中都有一个斜杠的产品页面 URL 不显示http 在他们中 以下是我需要匹配的 URL 我想要的看起来像这样 www example com just
  • 如何获取 NSRunningApplication 的参数?

    如何获取启动期间使用的参数列表NSRunningApplication 类似于我跑步时看到的ps aux let workspace NSWorkspace shared let applications workspace running