Je veux faire un programme C++ et j'utilise la fonction popen
ici pour envoyer des commandes à la ligne de commande sous Unix. Cela fonctionne très bien, mais quand j'appelle cd directory
, le répertoire ne change pas. Je pense que c'est la même chose quand j'essaie d'exécuter cd directory
dans un script, après avoir terminé le chemin du répertoire du script. Donc, les scripts que je dois exécuter comme . ./script.sh
pas ./sript.sh
, mais comment faire cela avec popen
fonction? J'ai essayé d'ajouter ". "
avant le premier argument de popen
, mais en cours d'exécution ". ls"
fait une erreur.Rester dans le répertoire avec popen
code:
cout << "@ Command from " << session->target().full() << ": " << message.body() << endl;
//cout << "Prisla zprava" << endl;
//m_session->send("Hello World", "No Subject");
//system(message.body().c_str());
//if (message.body() == "")
FILE* outp;
char buffer[100];
string outps = "";
outp = popen(message.body().c_str(), "r");
while (!feof(outp))
{
fgets(buffer, 100, outp);
outps = outps + buffer;
}
pclose(outp);
cout << "& Output from command: " << outps << endl;
m_session->send(outps.c_str(), "Output");
Dans message.body();
est string
que je veux courir (je reçois ce de XMPP
). Lorsque le string
est par exemple "ls"
, il renvoie string
avec la liste des fichiers dans le répertoire réel. Mais quand le message est "cd directory"
, rien ne se passe, comme essayer de changer de répertoire dans les scripts.
Comment allez-vous chandging répertoire? (un exemple de code pourrait être utile) – Mark
Comment changer le répertoire dans le programme? –
Il y a un exemple de code où je l'utilise. Ici j'essaie d'ajouter "."comme lors de l'exécution de scripts, mais". ls "fait une erreur sans". "le répertoire ne changera pas –