我想製作一些C++程序,我在這裏使用函數popen
將命令發送到Unix中的命令行。它工作正常,但是當我撥打cd directory
時,目錄不會更改。當我嘗試在某些腳本中運行cd directory
時,在完成腳本目錄路徑更改之後,這是相同的。所以,我必須運行腳本. ./script.sh
而不是./sript.sh
,但如何用popen
函數來運行?我曾嘗試在popen
的第一個參數前添加". "
,但運行". ls"
會發生錯誤。留在popen目錄中
代碼:
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");
在message.body();
是string
我要運行(我是從XMPP
收到此)。當string
例如爲"ls"
時,它返回string
以及實際目錄中的文件列表。但是當消息是"cd directory"
時,沒有任何反應,例如嘗試在腳本中更改目錄。
你怎麼chandging目錄? (代碼示例可能有用) – Mark 2009-10-28 10:20:11
如何更改程序中的目錄? – 2009-10-28 10:20:16
有我使用它的示例代碼。在這裏,我嘗試添加「。「就像運行腳本時一樣,但是」。 ls「出錯,沒有」。 「目錄不會改變 – 2009-10-28 10:23:59