我想制作一些 C++ 程序,我在popen
这里使用函数将命令发送到 Unix 中的命令行。它工作正常,但是当我调用时cd directory
,目录不会改变。cd directory
在完成脚本目录路径更改后,当我尝试在某些脚本中运行时,我认为它是相同的。所以,我必须像. ./script.sh
not那样运行脚本./sript.sh
,但是如何使用函数来做到这一点popen
?我试图". "
在 的第一个参数之前添加popen
,但运行". ls"
会出错。
代码:
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"
,什么都不会发生,比如尝试更改脚本中的目录。