Послушайте, в сущности, "система зла" - это люди, которые не думают о последствиях безопасности для своего конкретного случая использования. Единственная причина, по которой system «более злая», чем ваш собственный fork / dup / exec, заключается в том, что она используется плохо, и кто-то может ввести вредоносную командную строку. Так, например
#include <stdlib.h>
int main(int argc, char** argv){
(void) system(argv[1]);
}
определенно тупой , потому что кто-то может ввести, например, rm -rf /
в качестве аргумента. И, конечно, что-то столь же глупое можно сделать с popen .
Но затем рассмотрим что-то, что fork и exec использует пользовательскую строку для команды: точно такая же уязвимость и глупость существуют.
Зло, то есть ошибка, заключается в использовании произвольной входной строки в качестве команды без некоторой фильтрации, а не в вызове system .