首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用posix_spawn?

使用posix_spawn?
EN

Stack Overflow用户
提问于 2016-09-15 12:28:55
回答 1查看 2.2K关注 0票数 2

我尝试从我的应用程序启动一个命令文件,所以我需要使用"posix_spawn“。但使用这种方法需要奇怪地使用指针。我没有找到Swift (3.0)的任何例子,只有C++或目标C,我无法翻译。

我只需要这样的东西(在旧的系统调用中):

代码语言:javascript
复制
let err = system("ls -param >file.txt")

有什么想法吗?

编辑:链接的解决方案不匹配。首先,它不使用编译器提到的posix_spawn函数。它使用的是NSTask,它似乎也被抛弃了。但我尝试了这个例子,结果是:

代码语言:javascript
复制
func shell(launchPath: String, arguments: [String]) -> String
{
    let task = Process()
    task.launchPath = launchPath
    task.arguments = arguments

    let pipe = Pipe()
    task.standardOutput = pipe
    task.launch()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String

    return output
}

这里进行了XCode 8所需的所有更改。但是当调用时,它将永远不会从".launch()“返回。

在输出调试窗口的某个地方,我找到了这一行:

代码语言:javascript
复制
2016-09-15 15:06:36.793 DSRenamer[96562:2569582] launch path not accessible

在终端窗口中,相同的命令可以正常工作:

代码语言:javascript
复制
/usr/local/bin/ExifTool -ext .CR2
EN

回答 1

Stack Overflow用户

发布于 2016-12-30 03:51:54

我用斯威夫特来称呼目标-c方法(虽然不是最好的方法)。

  1. 定义一个目标-使用方法 #导入"SystemTaskHelper.h“@implementation SystemTaskHelper +(void)performSystemTask:(NSString *)任务{system(任务UTF8String);} @end
  2. 将目标-c util.h导入桥接-Header.h,并迅速使用SystemTaskHelper.performSystemTask("ls -param >file.txt")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39511050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档