⟩ What is the output of this program? #include<stdio.h> #include<stdlib.h> #include<netinet/in.h> #include<sys/types.h> #include<sys/socket.h> int main() { int fd_server, fd_client, len, len_client; struct sockaddr_in add_server, add_client; char buff[10]; fd_server = socket(AF_INET,SOCK_STREAM,0); if (fd_server == -1){ perror("fd_sock"); exit(1); } len = sizeof(add_server); len_client = sizeof(add_client); if( bind(fd_server,(struct sockaddr*)&add_server,len) != 0) perror("bind"); fd_client = accept(fd_server,(struct sockaddr*)&add_client,len_client); if(fd_client == -1) perror("accept"); read(fd_client,buff,10); return 0; } a) segmentation fault b) error at the time of compilation c) syntax error d) none of the mentioned
b) error at the time of compilation
Explanation:
The third argument of the accept is the type of pointer.
Output:
[root@localhost google]# gcc -o san san.c
san.c: In function 'main':
san.c:26:39: warning: passing argument 3 of 'accept' makes pointer from integer without a cast [enabled by default]
/usr/include/sys/socket.h:214:12: note: expected 'socklen_t * __restrict__' but argument is of type 'int'
[root@localhost google]#