Here's the code:
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
int main()
{
int sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if(sock == -1)
printf("Error\n");
char *s[100];
socklen_t *x;
int ret = getsockopt(sock, SOL_SOCKET, 1, s, x);
if(ret==0)
printf("Sucess!\n");
else
{
if(errno==EBADF)
printf("The argument sockfd is not a valid file descriptor.\n");
else if(errno==EFAULT)
printf("The address pointed to by optval is not in a valid part of.the process address space. For getsockopt(), this error may also be returned if optlen is not in a valid part of the process address space.\n");
else if(errno==EINVAL)
printf("optlen invalid in setsockopt(). In some cases this error.can also occur for an invalid value in optval (e.g., for the IP_ADD_MEMBERSHIP option described in ip(7)).\n");
else if(errno==ENOPROTOOPT)
printf("The option is unknown at the level indicated.\n");
else if(errno==ENOTSOCK)
printf("The file descriptor sockfd does not refer to a socket.\n");
}
}
When executed, it displays the text of the EFAULT error. I did everything according to the instructions and still can not understand what the problem is! Who can tell?