Углеродный эквивалент NSTask?

OS X 10.6.8, Carbon, приложение C ++.

Я хочу запустить команду из оболочки и вернуть результат в виде строки, чтобы затем использовать в качестве параметра для другой функции.

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

Но я не вижу NSTask-эквивалента для Carbon, C ++ и, насколько я могу найти, мне нужно было бы использовать Objective-C для использования NSTask

Я не вижу, что Boost есть что предложить.

Кто-нибудь может указать мне правильное направление?

РЕДАКТИРОВАТЬ: Итак, пытаясь вспомнить мои дни UNIX, как насчет использования popen в режиме чтения и получения желаемых результатов из указателя файла?

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);

Не забудьте добавить несколько проверок и дождаться дочернего процесса.

Но если вы можете использовать Какао, но не знаете, как объединить код C ++ и Objective-C — просто используйте Objective-C ++, помещая код в файл с расширением .mm.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]