LINUX.ORG.RU

popen + fopen = Segmentation fault


0

0

   Здраствуйте.
В треде программы :

    FILE *pptr;
    string buf_str = "check_test";
    if ( ( pptr = popen ( "/home/user/test", "w" ) ) != NULL )
    {
        fputs ( buf_str.c_str(), pptr );
        pclose ( pptr );
    }
    else
    {
        write_to_log ( "Error : can't popen" );
    }

В программе test : 

    string str;
    cin >> str;
    cout << str << endl;
    FILE *ptr;
    if ( fopen ( "/home/user/log", "a" ) != NULL )
    {
        fputs ( "test_ok", ptr );
        fclose ( ptr );
    }
    else
    {
        cout << "Error : Can't open " << endl;
    }
Результат данного :
Выводится на экран check_test ... далее Segmentation fault + появляется корка test.core . Основная программа продолжает выполнение. Подскажите пожалуйста что я тут напутал.
anonymous

>> if ( fopen ( "/home/user/log", "a" ) != NULL )

наверно так лучше if ( ptr = fopen ( "/home/user/log", "a" ) != NULL )

anonymous
()

Хорошая практика пользовать gccшный -Wall, помогает избежать опечетки .. в данном бы случае ругнулся бы что используешь не инициализнутую переменную

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.