Почему или когда мы будем вызывать системную функцию с помощью команд linux вместо написания кода на C / C ++? - PullRequest
0 голосов
/ 15 января 2019

Я новичок в 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...