Получение сообщения об ошибке - PullRequest
0 голосов
/ 19 марта 2011

Как получить текст сообщения об ошибке из потока в переменную?

Например

void * thread_func(void ) { 
  char args[]={"firefox","ax",NULL};
  pid_t child_pid = fork();
  if(child_pid!=0) {
    cout<<"error";
  } else {
    execvp("firefox",args); /*something should be done here to get the message*/
  }
  return 0;
}

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Используйте strerror (), чтобы получить строку с ошибкой. Установите errno на 0 перед вашим вызовом и проверьте его после. Это позволяет избежать смущающих сообщений, таких как печально известная «Не пишущая машинка», от доброкачественных вызовов, таких как printf, которые также могут устанавливать errno.

#include <cerrno>
#include <cmath>
#include <cstring>
#include <string>
#include <iostream>
#include <ostream>
using namespace std;

int main()
{
    errno = 0;
    sqrt(-1.0);
    if (errno != 0) {
        string s = strerror(errno);
        cout << s << endl;
    }
}
0 голосов
/ 19 марта 2011

Вы спрашиваете о чем-то вроде perror ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...