Я ищу решение для написания части программы на C ++ для Linux, которая анализирует файл, содержащий программы с заданными аргументами, а затем запускает эти программы с аргументами аргументов.
Каждая программа (строка) выполняется по одной за раз, а затем родительский процесс ожидает выхода каждого дочернего элемента и проверяет его состояние выхода (меня интересует только 0).
Пример текста для разбора:
prog1 -a arg1 -m arg2 -c arg3 prog2 arg1 arg2 arg3 arg4 ....
Я считаю, что лучше хранить все в векторестрок, например:
vector <std::string> p_vector;
while (getline(file, line))
p_vector.push_back(line);
затем для каждого элемента i от 0 до p_vector.size () мне нужно сделать что-то похожее на пример, который я нашел в сети:
if(fork() = 0) //? shouldn't here be == ?
{
execv(fullpath,argv);//does full path mean my p_vector[i]? or the child process and then argv is a list of space delimited arguments?
exit(1);
}
else
{
int *status;
wait(status);
if(*status == 0)
printf("%s exited correctly", fullpath);//fullpath, right?
else
//other printf error
}
или мне лучше использовать для этого
string command = p_vector[i]; // eg: ls -l -a -l folder_one , put more arguments because I do not know the exact number of them for each parsed line
int exitCode = system(command.c_str());
Если у кого-то есть идея, как сделать это с помощью скрипта, это тоже будет приветствоваться, хотя сфера моего вопроса - C ++!
Я мог бы использовать QProcess Qt, так как знаю, как его использовать, но это может вызвать некоторые юридические проблемы, о которых я сейчас знаю (однако проблем с совместным использованием кода нет, компания, в которой я работаю, можетне позволю это)
Спасибо и с нетерпением жду получения такмне ответы от тебя!