Я новичок в Linux ..
Я написал код C ++, где я вызывал системную функцию с помощью команды linux / shell.
Гораздо проще было вызывать системную функцию - меньше кода на C / C ++ для написания и меньше тестов для запуска или анализа всех возможных случаев
Мой вопрос: почему или когда мы предпочитаем код C / C ++ вместо системного вызова с функцией linux / shell? Я вижу только преимущества - это занимает меньше времени на разработку и более стабильно (команды оболочки охватывали все возможные случаи).
Мы используем только Linux (код не планируется переносить на Windows или другие платформы).
Это мой код, например - извлечь строки из журнала, которые были написаны позже, чем 'time' (вызов 'awk' с системной функцией):
#define BUF_LEN 1024
string time = "2019-01-09T23:32:36";//Just for example
string path_to_log = "path to a log";
string output_path = "...";
string cmd_r = "awk '$0 > \"" + time + "\"' " + path_to_log;
string result;
std::ofstream outfile(output_path);
if(!outfile.is_open())
{
printf("Error. Can't open file: [%s]", output_path.c_str());
return;
}
//Run command to extract lines
char buf[BUF_LEN];
FILE* pipe = popen(cmd_r.c_str(), "r");
if (pipe)
{
while (fgets(buf, BUF_LEN, pipe) != NULL)
{
result.append(buf);
outfile << buf;
}
}
pclose(pipe);
outfile.close();