Zmajstrowałem sobie jakiś czas temu coś takiego:
string FileSystemUtils::GetFileContent(const std::string& filePath)
{
string ret;
try{
string cmd = "cat " + filePath;
ret = SystemExecute::ExecuteCmd(cmd);
}
catch(CantUseSystemCallsException)
{
ret = ObtainFileContent(filePath);
}
return ret;
}
Gdzie klasa SystemExecute::ExecuteCms()
to mój wrapper na polecenie system()
, zwracam sobie dzięki temu bezpośrednio to, co zwraca wpisane polecenie. ObtainFileContent()
to pobranie zawartości pliku za pomocą biblioteki standardowej.
Wtedy jak to pisałem takie rozwiązanie wydawało mi się koszerne, wyszedłem z założenia, że cat dużo lepiej się sprawi w pobieraniu zawartości pliku, thread safety i takie tam. Jednakowoż niedawno natrafiłem na artykuł w którym przeczytałem o szeregach wad używania system()
. Jak widać po kodzie na przenośności mi nie zależało, jednak podobno powoduje ono duże obciążenie systemu. Tą metodę zamierzam przepisać, ale zacząłem się też zastanawiać kiedy używanie system()
ma sens?