一、使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是: -p partent
补充:-m (mode) 设定权限 mkdir -m 777 test
二、UNIX系统中进程由三部分组成:进程控制块,正文段和数据段。这意味着一个程序的正文和数据是可以分开的,这种分开的目的是为了:
可共享正文,可共享数据,可重入
三、编程中设计并发服务器,使用多进程和多线程,请问有什么区别
一、定义:进程是分配CPU资源的最小单位
线程是程序运行的最小单位
二、进程具有独立的堆栈地址空间,线程是共享的堆栈空间
三、多进程需要更多资源
四、因为进程占用资源大,所以处理速度比线程要低
五、多线程编写简单
六、线程共享数据,所以又可能导致数据冲突不安全。
四、使用栈实现一个队列的功能,
//仅仅为简单验证
stack<int>S1,S2;
//S1为输入,S2输出
int main()
{
int i=1;
int num;
//给S1赋值
while(i<10){
S1.push(i++);
}
//如果S2不为空,就清空
while(!S2.empty()){
S2.pop();
}
//将S1的值出栈赋给S2
while(!S1.empty()){
num=S1.top();
S2.push(num);
S1.pop();
}
//输出
while(!S2.empty()){
cout<<S2.top()<<" ";
S2.pop();
}
cout<<endl;
return 0;
}
//运行结果为1 2 3 4 5 6 7 8 9
输入是1 2 3 4 5 6 7 8 9满足队列的功能
五、TCP和UDP的区别
1、TCP面向连接,UDP面向不连接(即发送数据前不需要建立连接
2、TCP可靠UDP不可靠
3、TCP需要更多的系统资源
4、TCP是以字节流形式传输数据,UDP是以数据报传输
5、TCP保证数据的顺序,体现可靠性
6、TCP保证数据的完整性,体现可靠性,UDP可能出现丢包
7、TCP连接只能是点到点,UDP支持一对一,一对多,多对一,多对多的交互通信
8、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠的信道
六、对绝对地址0x100000赋值 让程序跳转到绝对地址是0x100000去执行
1、对绝对地址赋值:
首先想怎么样是赋值:*ptr=123;
*那么怎么给绝对地址赋值:将绝对地址转化为指针:
(unsigned int*) 0x100000 = 123;
2、让程序跳转到绝对地址运行
首先程序运行的起点是哪:函数
那么就是将地址转换为函数指针:
void((void (void*)() )0x100000) ( )
七、完全二叉树和满二叉树的区别
形象理解就是:完全二叉树是一个缺失的三角形,但是缺少的部分一定是右下角某个连续的部分。
满二叉树就是,一个完整的三角形
八、内核进程管理的方法
进程的状态有:创建,运行,就绪,等待,销毁
创建就是fork(),等待就是waitpid();
九、linux内核提供的能够访问用户指针的api有哪些?哪些是安全的
能够访问用户指针的API有:fork(创建一个新进程) clone(按指定条件创建子进程) execve (运行可执行文件) exit (中止进程) _exit (立即中止当前进程) _usr安全
十、在c++程序中调用被C编译器编译后的函数,为什么要使用extern “C”
首先说明C++中为什么能函数重载,在于C++编译后会把函数声明为
int func(int a,int b)------>_int_int_func;
但是C语言中不会,加入extern"C"可以告诉C++编译器这是C语言的函数,在编译是就会对函数名重命名,从而避免函数重名,导致二义性。
十一、找错题
int main()
{
char string[10];//大小为10
char* str1='01234567890';//大小为11(\0)
strcpy(string,str1); //数组越界
return 0;
}
十二、改错
int main()
{
char string[10],str1[10];
int i;
for(int i=0;i<10;i++){
str1='a';//将一个字符赋给一个地址,改为str1[i]='a'或者*(str1+i)='a';
}
strcpy(string,str1);
return 0;
}
十三、reinterpret——cast
C++中强制转化的关键字
十四、写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789
#include <iostream>
#include<string>
#include <cstring>
#include