Как проверить сообщения об ошибках от perror? - PullRequest
1 голос
/ 07 февраля 2012

Я знаю, это просто, но я не мог получить это.

Я использую ОС Ubuntu. Следующий код был написан в исходном коде mysql (в файле sql_parse.cc). Мне нужно проверить сообщение об ошибке perror. Как я могу получить эти сообщения? Я не думаю, что эти сообщения об ошибках будут отображаться в консоли, где я запускаю клиент / сервер mysql?

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

{ 
string hashed;
int sockfd, n;
char buf[MAXDATASIZE], url[MAXDATASIZE], ack[6];
struct hostent *he;
struct sockaddr_in remote_addr;

if ((he=gethostbyname("localhost")) == NULL) { // get the host info
    perror("gethostbyname");
    exit(1);
    }

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(1);
    }

remote_addr.sin_family = AF_INET; // host byte order
remote_addr.sin_port = htons(PORT); // short, network byte order
remote_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(remote_addr.sin_zero), '\0', 8); // zero the rest of the struct

if (connect(sockfd, (struct sockaddr *)&remote_addr, sizeof(struct sockaddr)) == -1) {
    perror("connect");
    exit(1);
    }

Пожалуйста, помогите мне ....

1 Ответ

0 голосов
/ 07 февраля 2012
  1. функция perror является одним из стандартных потоков .

  2. Она выдает выходные данные в stderr. Вы можете перенаправить вывод stderr в пользовательское место (например, файл или консоль stdout) в Linux.

Например, после компиляции кода, скажем,программный файл, созданный как «myprogram»

, если вы запустите этот файл следующим образом:

./myprogram 2>&1

вы можете увидеть ошибки perror в вашей консоли .

Для вашей конкретной ситуации , вам необходимо прочитать журнал ошибок Mysql.В Debian , файл Mysql Config говорит следующее:

Журнал ошибок идет в системный журнал из-за /etc/mysql/conf.d/mysqld_safe_syslog.cnf.

Чтобы вы могли прочитать эти ошибки, прочитав файл системного журнала .Вы можете прочитать системный журнал с помощью текстового редактора или менее, и так далее:

sudo gedit /var/log/syslog
...