1

OS X 10.6.8、Carbon、C++ 应用程序。

我想从 shell 运行命令并将结果作为字符串返回,然后用作另一个函数的参数。

df / | tail -n +2 | awk '{ print $1 }'

但是我没有看到与 Carbon、C++ 等效的 NSTask,据我所知,我需要使用 Objective-C 来使用 NSTask

我也没有看到 Boost 有什么可提供的。

谁能指出我正确的方向?

编辑:所以试图记住我的 UNIX 日子,popen在读取模式下使用并从文件指针中获取我想要的结果怎么样?

4

1 回答 1

1

当然你也可以这样写:

int myPipe[2];
int err = pipe(&myPipe); // write to myPipe[1] in child, read from myPipe[0] in parent

int child_pid = fork();
if(child_pid == 0)
{
    err = dup2(myPipe[1], 1); // redirect standard output to the input of the pipe
    execl("/path/to/program", "arg1", "arg2");
}

int pipefd = myPipe[0];
char buffer[255];
err = read(pipefd, buffer, 255);

不要忘记添加一些检查并等待子进程。

但是,如果您可以使用 Cocoa,但不知道如何加入 C++ 和 Objective-C 代码 - 只需使用 Objective-C++ 将代码放置到扩展名为 .mm 的文件中。

于 2013-03-28T09:44:04.107 回答