目录
2.一个端口可以绑定多个套接字,(Io复用),udp端口号最大为65535
void (*signal(int signal,int *(func)(int)),signal是一个函数
1.同一进程内的所有线程共享什么
程序计数器 线程有自己的error和堆内存
2.一个端口可以绑定多个套接字,(Io复用),udp端口号最大为65535
c类网络可以容纳几台主机?
a类网络-2的24次幂-2个保留地址
b类网络-2的16次幂-2
c类网络-2的8次幂-2=254
3.关于signal()函数的定义
void (*signal(int signal,int *(func)(int)),signal是一个函数
4.atoi(字符串到数字的转化)细品 得注意
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
typedef enum Ret
{
VALID,
INVALID
}Ret;
Ret state = INVALID; //用来判断异常的全局变量
int My_Atoi(const char* str)
{
int flag = 1; //正负
long long ret = 0; //返回值
assert(str);
if(str == NULL) //空指针
{
return (int)ret;
}
if(str == '\0') //空字符串
{
return (int)ret;
}
while(*str == ' ') //空白字符
{
str++;
}
if(str == '\0') //空白字符串
{
return (int)ret;
}
else if(*str == '+' || *str == '-')
{
if(*str == '-')
{
flag = -1;
}
str++;
}
while(*str)
{
if((*str <= '9') && (*str >= '0'))
{
state = VALID;
ret = ret * 10 + flag * (*str - '0');
str++;
if(ret > INT_MAX) //上溢出
{
state = INVALID;
printf("上溢出,");
return (int)INT_MAX;
}
if(ret < INT_MIN) //下溢出
{
state = INVALID;
printf("下溢出,");
return (int)INT_MIN;
}
}
else //异常字符
{
return (int)ret;
}
}
return (int)ret;
}
5.关于memcpy函数的复制方式
memcpy(&data[2],data,5);
比如说这题就是在同一个数组中,打印出来的结果是1212345890 ,由此可见,他应该是先把5个数放到一个单独的空间内,再把他们挨个复制给原数组。
6.linux下find和grep命令的区别(经常见到)
find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找
如果说在某目录下查找某字符串,就用find
7.linux驱动下,insmod和modprobe的区别
1.两者类似,都是动态加载驱动模块,但是modprobe可以解决load module时的依赖关系,insmod不能解决依赖问题,如果你要加载的驱动模块不依赖其他.ko,那么用insmod更好,因为它可以在任何目录下执行,反之,则用modprobe.
8.linux操作系统内核的基本管理模块
1.进程调度模块:用来控制进制对cpu资源的合理使用,使各个进程可以公平合理的访问cpu
2.内存管理模块:MMU内存管理单元,可以利用文件系统,把暂时不用的内存数据交换到外部储存设备,需要时再换回来(交换分区)
3.文件系统模块:支持对外部设备的驱动和储存
4.进程间通信模块:支持多种通信
5.网络接口模块:支持许多网络硬件