why dose this now segfault?
Code:
#include <string.h>
#include <iostream>
#include <fstream>
#include <boost/thread.hpp>
void mplayer_thread( FILE *&mpipe )
{
mpipe = popen("mplayer -slave -quiet -idle" , "w");
}
class mplayer_interface
{
private:
FILE *mp_pipe;
boost::thread thread_mp;
public:
void setup()
{
thread_mp = boost::thread(mplayer_thread , mp_pipe );
//mp_pipe = popen("mplayer -slave -quiet -idle" , "w");
}
void close()
{
pclose(mp_pipe);
thread_mp.join();
}
void play( )
{
fputs("loadlist ./data/.currentplaylist\n", mp_pipe); //segfaults here
}
void stop()
{
fputs("stop\n", mp_pipe);
}
};
void cd_to_exe_dir( char *argv[] )
{
std::string path = argv[0];
int ii = path.length();
while ( !( path[ii] == '/' || path[ii] == '\\' ) )
{
ii--;
}
path.erase( ii, 100 );
chdir( path.c_str() );
}
int main( int argc, char *argv[] )
{
cd_to_exe_dir( argv );
mplayer_interface mplayer;
mplayer.setup();
mplayer.play();
mplayer.stop();
std::string userI;
while ( strcmp( userI.c_str(), "exit") != 0 )
{
std::cout<<'>';
std::cin>>userI;
}
mplayer.stop();
mplayer.close();
return(0);
}