在/etc/hosts文件下加入:

192.168.1.60 u60 #设置u60为主机名

在每个节点上创建RSA秘钥:

# ssh-keygen -t rsa # 一直按确定键即可

# touch /root/.ssh/authorized_keys

先配置u60,这样u60就可以无密码访问u62和u63了:

u60# scp /root/.ssh/id_rsa.pub u62:/root/.ssh/id_rsa.pub_u60

u60# ssh u62 "cat /root/.ssh/id_rsa.pub_u60>> /root/.ssh/authorized_keys"

面试题

 1) void GetMemory(char **p, int num)
   {
   *p = (char *)malloc(num);
  }
  void Test(void)
   {
   char *str = NULL;
   GetMemory(&str, 100);
   strcpy(str, "hello");
   printf(str);
  }
  请问运行Test 函数会有什么样的结果, 有没有问题?

2) void Test(void)
   {
      char *str = (char *) malloc(100);
      strcpy(str, “hello”);
      free(str);
      if(str != NULL)
       {
    strcpy(str, “world”);
    printf(str);
     }
  }
  请问运行Test 函数会有什么样的结果,有没有问题 ?
  
3)  char *GetMemory(void)
    {
   char p[] = "hello world";
   return p;
  }
  void Test(void)
   {
    char *str = NULL;
    str = GetMemory();
    printf(str);
  }

请问运行Test 函数会有什么样的结果,有没有问题 ?

4)  双向链表的头指针为pStart, 尾指针为pEnd, 其中一个元素的指针为p, 将p删除,放到最后。
6) 编写strcat函数
  已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
  其中strDest 是目的字符串,strSrc 是源字符串。
7) 写一个单件CSingleton;
8) 给定两个字符串 s1 和s2, 要求判定s2是否能够通过s1做循环移位得到字符串包含。例如,给定s1 = aabcd和s2= cdaa,返回true,如果s1 == abcd 和s2 = acbd, 返回false.

 

NO1

void GetMemory(char *p)

{

p=(char *)malloc(100);

}

void Test()

{

char * str=NULL;

GetMemory(str);

strcpy(str,"Hello world");

printf(str);

}

实质:GetMemory(str)在调用时会生成一个_str与str指向同一个数,这是因为C语言中函数传递形参不改变实参的内容,但是指针指向的内容是相同的,因此可以用指针控制数据。题中的GetMemory(str),实质是对_str的操作,并没有对str操作,函数结束后_str撤销,因此不会产生新的内存空间,str仍然是一个空指针。

NO2

char *GetMemory()

{

char p[]="Hello World";

return p;

}

void Test()

{

char * str=NULL;

str=GetMemory();

printf(str);

}

实质:当一个函数调用结束后会释放内存空间,释放它所有变量所占用的空间,所以数组空间被释放掉了,也就是说str所指向的内容不确定是什么东西。但是返回的指针指向的地址是一定的。

NO3

char *GetMemory()

{

Return “hello world”;

}

void Test()

{

char * str=NULL;

str=GetMemory();

printf(str);

}

实质:本例打印hello world,因为返回常量区,而且并没有修改过。在上一个例子中不一定能打印hello world,因为指向的是栈区。

NO4

void GetMemory(char **p,int num)

{

*p=(char *)malloc(num);

}

void Test()

{

char * str=NULL;

GetMemory(&str,100);

strcpy(str,"Hello");

printf(str);

}

可以正确的打印Hello但是内存泄露了,在GetMemory()中使用了malloc申请内存,但是在最后却没有对申请的内存做任何处理,因此可能导致内存的泄露,非常危险。

NO5

void Test()

{

char *str=(char *)malloc(100);

strcpy(str,"Hello");

free(str);

if (str!=NULL)

{

strcpy(str,"World");

printf(str);

}

}

申请空间,拷贝字符串,释放空间,前三步操作都没有问题,到了if语句里的判断条件开始出错了。因为一个指针被释放了之后其内容并不是NULL,而是一个不确定的值,所以if语句永远不能被执行,这也是著名的“野”指针问题。

NO6

void GetMemory(void)

{

char *str=(char *)malloc(100);

strcpy(str,"hello");

free(str);

if (str !=NULL)

{

strcpy(str,"world");

printf(str);

}

}

Str 为野指针,打印的结果不能确定。

 
 

设置不输入密码ssh登录的更多相关文章

  1. VSS2005设置不输入密码直接登录VSS

    1.登录管理员 2.Tools-->Options-->General -->Use network name for automatic user log in  去掉勾选不自动登 ...

  2. 阿里云ECS重置磁盘到SSH登录

    1.登录阿里云(www.aliyun.com) -- > 控制台: 2.点击左边的"云服务器ECS": 3.点击上面"第二步",进入页面之后,点击&quo ...

  3. Linux设置SSH登录(SecureCrt)

    背景 每次登录需要输入复杂的密码,而且不停的有人在尝试登录root账户.感觉心慌慌,所以不得不设置更加安全的登录方式. 配置SSH无密码登录需要4步 准备工作 生成公钥和私钥 导入公钥到认证文件,更改 ...

  4. 用SSH登录局域网中使用网络设置为NAT的虚拟机中的linux

    环境描述: A客户机,安装有putty软件使用SSH方式登录B主机中的虚拟机中的linux:A机的网络地址:192.168.1.2 B主机为Windows7平台,B主机的网络地址为:192.168.1 ...

  5. 【转】ssh登录慢,等待输入密码时间长的解决办法

    http://youhuiba.net/2013/06/09/520.html 有时候在ssh远程登录到其他主机上时发现登录时间太长,要等待很久才会出现输入密码的提示,google了一下,发现主要有两 ...

  6. ssh登录慢,等待输入密码时间长

    有时候在ssh远程登录到其他主机上时发现登录时间太长,要等待很久才会出现输入密码的提示,google了一下,发现主要有两个问题会导致ssh登录慢: 1.使用了dns反查,这样的话当ssh某个IP时,系 ...

  7. 不输入密码ssh直接登录阿里云Linux主机

    服务器环境:阿里云云服务器,Linux版本 - CentOS 客户端环境:Mac OSX Terminal 注意: 如果有3个账号都要无密码登录, 则3个账号都要这么操作 在Terminal中用ssh ...

  8. centos6创建用户,设置ssh登录

    创建用户 #创建用户 useradd -s /sbin/nologin mysql useradd –d /usr/china -m china #设置密码 passwd mysql passwd c ...

  9. 给Linux设置SSH登录邮件提醒

    给Linux设置SSH登录邮件提醒 心血来潮,用 last 命令查看了登录记录,不看不知道,一看就有问题.竟然有两个陌生的IP ,一个是美国欧莱雅的,一个是北京联通的.真是郁闷,密码简单了真不行 后来 ...

随机推荐

  1. C++模板:读入优化

    int scan(int &x){ while(c=getchar(),c<'0'||c>'9');x=c-'0'; while(c=getchar(),c>='0'& ...

  2. Android学习资料PDF免费大放送,每日更新!有需要的亲看这里

    说明:以前有资料分享的时候,都叫大家留下自己的QQ邮箱,这样被很多的程序猿们认为我是专门来钓你们的QQ邮箱的.为此给大家带来的顾虑,深表抱歉.从现在开始,以后的分享资料我都会放在自己的百度网盘中,提供 ...

  3. [置顶] Asp.Net底层原理(一、浏览器和服务器的交互原理)

    …… 一.浏览器和服务器的交互原理 二.写自己的"迷你"Asp.net框架 三.Asp.Net的请求与响应过程 1.在此之前,首先简单的模拟一下我们去请求一个网址的时候,浏览器和服 ...

  4. Ext JS学习第八天 Ext基础之 认识Ext.js 和Ext-more.js

    此文来记录学习笔记: •认识Ext.js 和Ext-more.js •首先,我们要知道这2个js文件的作用,这俩个文件包含了Ext的一些基础定义.基本的属性和方法,我们要重点学习和深入底层代码进行研究 ...

  5. iOS开发针对SQL语句的封装

      1.使用依赖关系 a.需要添加libsqlite3.tbd 静态库. b.需要添加第三方框架 FMBD.MJExtension. 2. SQL语句类封装名DataBaseSqlTool 类方法介绍 ...

  6. 【转载】如何用Maven创建web项目(具体步骤)

    使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing 选择 ...

  7. Piggy-Bank (完全背包)

      Description Before ACM can do anything, a budget must be prepared and the necessary financial supp ...

  8. MongoDB学习笔记1(简介)

    一.简介                 1.丰富的数据类型         MongoDB是一种非关系型数据库,是面向文档的数据库.         MongoDB没有模式,文档的键不会事先定义,也 ...

  9. 直播服务器Nginx

    Mac直播服务器Nginx配置对HLS的支持 在上一篇中Mac上搭建直播服务器Nginx+rtmp,我们已经搭建了nginx+rtmp直播服务器.下面需要对Nginx服务器增加对HLS的支持.在Ngi ...

  10. 飘逸的python - 简单探索time模块

    time模块中方法众多,不过在了解本质和联系之后,就会发现其实很简单. 在python中可以用3种方式来表达时间.看似很乱,其实就只是这3种变来变去来回转换而已. 1.时间戳 2.时间tuple,由9 ...