2011-03-19 5 views
0

오류 메시지의 텍스트를 스트림에서 변수로 가져 오는 방법은 무엇입니까? 예를오류 메시지 받기

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; 
} 
+4

어떤 오류입니까? 무슨 메시지 야? 어떤 물줄기? 어떤 변수? – ereOn

+0

당신이 원했던 것을 보여줘야한다는 코드를 게시하십시오. – Mat

+0

예 : void * thread_func (void) { char args [] = { "firefox", "ax", NULL}; pid_t child_pid = fork(); if (child_pid! = 0) { cout << "error"; } else { execvp ("firefox", args); /* 메시지를 얻으려면 여기에서해야합니다 */ } return 0; } – Hayk

답변

0

를 들어

당신은 errno를위한 문자열을 얻을 수 perror()

+0

예. 나는 리눅스에서 프로세스를 만들고 있는데, 생성되지 않았다면 터미널에 메시지가 있어야한다. 나는 그 메시지의 텍스트가 필요하다. – Hayk

+0

perror가 그것을 인쇄 할 것이지만, 나는 fizzer가 그것을 저장하는 올바른 생각을 가지고 있다고 생각합니다. – jonsca

1

사용 함수 strerror()처럼 뭔가에 대해 질문입니다. 호출하기 전에 errno를 0으로 설정하고 나중에 테스트하십시오. 이렇게하면 errno를 설정할 수있는 printf와 같은 호의적 인 'not a typewriter'와 같은 당황스러운 메시지를 피할 수 있습니다.

#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; 
    } 
} 
+2

이 당신에게 도움이 될 것입니다. – fizzer

+0

exec 및 친구들이 errno를 실패로 설정 했음에도 불구하고 당신이 묻는 것을 말하기가 어려우므로 – fizzer