作业社区
探索学习新天地,共享知识资源!
阿大月 的学生作业:
socket() 函数是网络编程中的核心函数之一,用于创建一个新的套接字(socket),它允许程序通过网络进行通信。 #include #include int socket(int domain, int type, int protocol); 参数详解 domain: 指定通信域或协议族(Protocol Family)。常见的值包括: AF_INET: IPv4 网络协议。 AF_INET6: IPv6 网络协议。 AF_UNIX: Unix 域套接字,用于同一台主机上的进程间通信。 type: 指定服务类型或套接字类型。常用的有: SOCK_STREAM: 提供有序、可靠、双向的基于连接的字节流。(TCP) SOCK_DGRAM: 支持数据报文(datagram)无连接通信。(UDP) SOCK_RAW: 提供原始网络协议访问。 protocol: 指定使用的特定协议。通常设置为0,表示使用给定的 domain 和 type 的默认协议。对于 AF_INET 和 SOCK_STREAM,默认协议为 TCP;对于 AF_INET 和 SOCK_DGRAM,默认协议为 UDP。 返回值 成功时,socket() 返回一个文件描述符,该描述符指向新创建的套接字。如果发生错误,则返回 -1 并设置全局变量 errno 来指示错误类型。
蜡笔小方哎 的学生作业:
发现一个问题:不支持tab键 #include #include #include #include #include #include #define MY_LEN 50 // 假设输入的命令的字符串长度不超过50个字符 #define NUM_CMD_STR 10 // 假设输入的命令的字符串个数不超过10个 int main() { char cmd[MY_LEN]; char* my_argv[NUM_CMD_STR]; char* d = " "; char* token; int idx; pid_t pid; while(1) { memset(cmd, 0, MY_LEN); printf("minishell> "); fgets(cmd, MY_LEN, stdin); cmd[strlen(cmd)-1] = '\0'; if(strcmp(cmd, "exit") == 0) break; #ifdef DEBUG printf("[DEBUG] cmd = %s\n", cmd); #endif token = strtok(cmd, d); idx = 0; memset(my_argv, 0, NUM_CMD_STR*sizeof(char*)); while(token) { #ifdef DEBUG printf("[DEBUG] token = %s\n", token); #endif my_argv[idx++] = token; token = strtok(NULL, d); } #ifdef DEBUG printf("[DEBUG] my_argv = "); for(idx=0; idx