linux 网络编程问题

发布网友 发布时间:2022-04-20 19:26

我来回答

2个回答

热心网友 时间:2023-07-10 16:43

首先要明白什么是可重入性?

可重入函数主要是在多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;

而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。

针对你的问题看看你的代码有没有使用全局变量或者其他的不可重入因子,追问qnmlgb

热心网友 时间:2023-07-10 16:43

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
char IPdotdec[20]; //存放点分十进制IP地址
struct in_addr s; // IPv4地址结构体

int main (void)
{
// 输入IP地址
printf("Please input IP address: ");
scanf("%s", &IPdotdec);
// 转换
inet_pton(AF_INET, IPdotdec, (void *)&s);
printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序
// 反转换
inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);
printf("inet_ntop: %s\n", IPdotdec);

}
GCC -O oTob oTob.c
希望对你能有所帮助。追问刷分狗,让我告诉你原因吧

inet_ntoa函数返回的char*的内存由Window Sockets分配,程序外部不要去对他的内存分配做任何假想,这块内存在同一个线程内一直不会发生改变直到调用了下一个函数,这里就会出现一个问题,线程内是安全的,但是线程间是否安全问题。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com