OS X 10.6.8,Carbon,C ++ app。
我想从shell运行命令并将结果作为字符串返回,然后用作另一个函数的参数。
df / | tail -n +2 | awk '{ print $1 }'
但是我没有看到Carbon,C ++的NSTask等价物,据我所知,我需要使用Objective-C来使用NSTask
我没有看到Boost也提供任何东西。
有人能指出我正确的方向吗?
编辑:所以试着记住我的UNIX时代,在读取模式下使用popen
并从文件指针中获取我想要的结果怎么样?
答案 0 :(得分: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的文件中。