2013-03-09 2 views
1

В принципе, я хочу EXEC программу под названием «рабочий» с 6 аргументов, которые Интс ...прохождение не символьные * аргументы execvp

char* args[7] = {(char*)"worker",workerID,i+1,msgID,shmID,semaphoreID,NULL}; 
if(execvp("worker",args)<0){ 
    cerr << "execvp failed" << endl; 
    exit(1); 
} 

Как правильно бросить их, чтобы ввести символ *? Я попытался добавить с (char*) и использовать stringstream для хранения их в массивах char, но я все еще получаю ошибки компилятора.

ответ

0

Вы должны фактически преобразовать их в строки. Посмотрите на Sprintf или это так, вопрос:

Where is the itoa function in Linux?

+0

Хорошо, я сконвертировало Интс в строки, но я все еще получаю эту ошибку 5 раз ... 'master.cpp: 205: 81: error: нет жизнеспособного преобразования из 'string' (aka 'basic_string ') в 'char *' ' один раз для каждого аргумента int –

+0

Используйте' str.c_str() '. –

+0

, когда я добавляю '.c_str()' в args, теперь я получаю эту ошибку ... 'master.cpp: 205: 50: error: невозможно инициализировать элемент массива типа 'char *' с rvalue of type 'const char *' ' –

Смежные вопросы