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

我想从 shell 程序运行命令并以字符串形式返回结果,然后用作另一个函数的参数。
df / | tail -n +2 | awk '{ print $1 }'
但是我看不到与Carbon,C++等效的NSTask,据我所知,我需要使用Objective-C才能使用NSTask

我没有看到Boost可以提供任何东西。

谁能指出我正确的方向?

编辑:所以想回想起我的UNIX时代,在读取模式下使用popen并从文件指针获取我想要的结果如何?

最佳答案

当然,您可以这样写:

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的文件中即可。

07-24 13:52