Hello, I want to make some C++ program and I'm using function popen here to send commands to command line in Unix. It works fine, but when I call "cd directory", the directory doesn't change. I thing that it's same when I try to run "cd directory" in some script, after finishing script directory path change back. So, scripts I must run like ". ./script.sh" not "./sript.sh", but how to do that with popen function? I have tried to add ". " before first argument of popen, but running ". ls" makes error.
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 (nessage.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");`
In message.body(); is string which I want to run (I'm receiving this from XMPP). When the string is for example "ls", it returnes string with list of files in actual directory. But when the message is "cd directory", nothing happens, like triing to change directory in scripts.