C ++プログラムを作成したいのですが、popen
ここで関数を使用して、Unixのコマンドラインにコマンドを送信しています。正常に動作しますが、を呼び出しcd directory
てもディレクトリは変更されません。cd directory
スクリプトディレクトリパスの変更を終了した後、スクリプトで実行しようとした場合も同じです。. ./script.sh
だから、私はそうではないように実行しなければならないスクリプトですが、関数./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" );
実行したいのはInmessage.body();
です(これはから受け取っています)。たとえばの場合、実際のディレクトリ内のファイルのリストとともに返されます。しかし、メッセージがの場合、スクリプトのディレクトリを変更しようとするようなことは何も起こりません。string
XMPP
string
"ls"
string
"cd directory"