Неиспользуемая переменная в C для sockaddr_un - PullRequest
0 голосов
/ 18 марта 2019

Я скопировал фрагмент кода из нескольких источников, но по какой-то причине я получаю ошибку неиспользованной переменной для переменной saun, когда пытаюсь реализовать. Любые указатели будут с благодарностью, спасибо!

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include "gfserver.h"


#include <sys/mman.h>

#define SOCKET_ADDR "sock_addr"
#define MAX_REQ_BUF 523

/* Main ========================================================= */
int main() {


  int sockfd;
  size_t n;
    struct sockaddr_un saun;
    int len;

    if ((sockfd =  socket(AF_UNIX, SOCK_STREAM, 0)) < 0){
        fprintf(stderr, "ERROR opening socket");
        exit(1);
    }

    saun.sun_family = AF_UNIX;
    strcpy(saun.sun_path, SOCKET_ADDR);
    len = sizeof(saun.sun_family) + strlen(saun.sun_path);
    struct sockaddr* sockaddptr;
    sockaddptr = &saun;
    if(connect(sockfd, sockaddptr, len) < 0){
        fprintf(stderr, "ERROR connecting socket");
        exit(1);
    }
    char request_buffer[MAX_REQ_BUF] = {0};
    n = write(sockfd,request_buffer,MAX_REQ_BUF - 1);
    if (n < 0){
        fprintf(stderr, "ERROR writing to socket: %d\n",errno);
        exit(-1);
    }
}

https://users.cs.cf.ac.uk/Dave.Marshall/C/node28.html http://osr507doc.sco.com/en/netguide/dusockT.code_samples.html

Приведенный выше код находится в файле с именем webproxy.c. По сути, это часть серверной программы, которая будет проверять локальный кеш через IPC. В другом файле (simplecached) есть еще один сокет. По какой-то причине этот похожий код не выдает такую ​​же ошибку, пока я не удалю код сокета из webproxy.c, тогда код с простым кэшированием показывает похожую ошибку компиляции (Неиспользуемая переменная для ситуации того же типа). Я стесняюсь добавлять слишком много кода, рискуя разделить слишком много школьных заданий, поэтому я извиняюсь за это.

Ошибка компиляции:

make all 
mv gfserver.o gfserver.tmpo 
mv gfserver_noasan.o gfserver_noasan.tmpo
rm -rf *.o webproxy simplecached webproxy_noasan simplecached_noasan
mv gfserver.tmpo gfserver.o
mv gfserver_noasan.tmpo gfserver_noasan.o
cc -c -o webproxy.o -Wall --std=gnu99 -g3 -Werror -fPIC -fsanitize=address -fno-omit-frame-pointer webproxy.c
webproxy.c: In function ‘main’:
webproxy.c:15:23: error: storage size of ‘saun’ isn’t known
    struct sockaddr_un saun;
                       ^~~~
webproxy.c:15:23: error: unused variable ‘saun’ [-Werror=unused-variable]
cc1: all warnings being treated as errors
make: *** [webproxy.o] Error 1
Makefile:39: recipe for target 'webproxy.o' failed
"make all" terminated with exit code 2. Build might be incomplete.

15:21:58 Build Failed. 4 errors, 0 warnings. (took 177ms)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...