Zitat von
totycro
Sind diese 3 Zeichen (" ' \) die einzigen, bei denen es nicht funktioniert? Die könnte man doch einfach escapen..
je nach dem ob du ' oder " für die quotes verwendest gibts noch mit mehr ziechen probleme. bei ' gibts nur mit anderen ' probleme. also dann kann mans so machen (ungetesteter c++ code):
Code:
#include <iostream>
int system(const std::string & prog, const std::list<std::string> & args) {
std::stringstream ss;
escape(prog, ss);
for (std::list<std::string>::const_iterator it = args.begin(), end = args.end(); it != end; ++ it) {
ss << " ";
escape(*it, ss);
}
return system(ss.str().c_str());
}
void escape(const std::string & s, std::ostream & os) {
os << "'";
for (std::string::const_iterator it = s.begin(), end = s.end(); it != end; ++ it) {
if (*it == '\'') {
os << "'\\''";
}
else {
os << *it;
}
}
os << "'";
}
Hab aber schon länger nix mehr mit C++ gemacht. In python:
Code:
import os
def system(prog,*args):
return os.system('%s %s' % (escape(prog),' '.join(escape(arg) for arg in args)))
def escape(s):
return "'%s'" % s.replace("'","'\\''")
Lesezeichen