gpt4 book ai didi

c++ - 如何检查来自 perror 的错误消息?

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:53 25 4
gpt4 key购买 nike

我知道这很简单,但我做不到。

我使用的操作系统是 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. perror 函数是标准流之一。

  2. 它向 stderr 提供输出。 您可以将 stderr 输出重定向到Linux 中的自定义位置(如文件或标准输出控制台)。

例如,编译代码后,假设创建一个名为“myprogram”的程序文件

如果您以这种方式运行此文件:

./myprogram 2>&1

您可以在控制台中看到错误。

对于您的具体情况,您需要阅读 Mysql 错误日志。在 Debian 中,Mysql 配置文件是这样说的:

Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.

因此,您可以通过读取系统日志文件来读取这些错误。您可以通过文本编辑器或 tail、less 等阅读系统日志:

sudo gedit /var/log/syslog

关于c++ - 如何检查来自 perror 的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9172782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com