ㅤ ㅤㅤ537 2023-09-06 14:12 采纳率: 100%
浏览 15
已结题

创建一个线程,在线程中获取本机IP地址,并在屏幕上输出

题目:用c语言(使用linux下的库文件)编写一个应用程序实现以下功能,
创建一个线程,在线程中获取本机IP地址,并在屏幕上输出
最好能有运行成功截图

  • 写回答

6条回答 默认 最新

  • 喝茶品人生 2023-09-06 14:21
    关注

    img

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <ifaddrs.h>
    
    void *getIPAddress(void *arg) {
        struct ifaddrs *ifaddr, *ifa;
        char ip[INET_ADDRSTRLEN];
    
        if (getifaddrs(&ifaddr) == -1) {
            perror("getifaddrs");
            exit(EXIT_FAILURE);
        }
    
        for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
            if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != AF_INET) {
                continue;
            }
    
            struct sockaddr_in *addr = (struct sockaddr_in *)ifa->ifa_addr;
            inet_ntop(AF_INET, &(addr->sin_addr), ip, INET_ADDRSTRLEN);
            printf("Interface: %s\t IP Address: %s\n", ifa->ifa_name, ip);
        }
    
        freeifaddrs(ifaddr);
        return NULL;
    }
    
    int main() {
        pthread_t thread;
    
        if (pthread_create(&thread, NULL, getIPAddress, NULL) != 0) {
            perror("pthread_create");
            exit(EXIT_FAILURE);
        }
    
        if (pthread_join(thread, NULL) != 0) {
            perror("pthread_join");
            exit(EXIT_FAILURE);
        }
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月6日
  • 已采纳回答 9月6日
  • 修改了问题 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 robocopy文件复制
  • ¥15 unity安卓打包出现问题
  • ¥15 爱快路由器端口更改错误导致无法访问
  • ¥20 安装catkin时遇到了如下问题请问该如何解决呢
  • ¥15 VAE模型如何输出结果
  • ¥15 编译python程序为pyd文件报错:{"source code string cannot contain null bytes"
  • ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
  • ¥15 fluent设置了自动保存后,会有几个时间点不保存
  • ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值
  • ¥50 数据库开发问题求解答