信息安全系统设计基础第十二周学习总结

第十二周(11.23-11.29):学习计时:共6小时

  • 指针数组

    是数组,数组里的元素是指针

    int *daytab[13]

    数组指针

    是指针,指向一个类型和元素个数都固定的数组

    int (*daytab1)[13]

    指针函数

    是函数,返回值类型是指针

    int *comp()

    函数指针

    是指针,指向函数的指针,函数名就是函数指针

    int (*comp1)()

    右左右左法

    每次分析不要跨过括号,位于右边的小括号和中括号具有更高的优先级。

    1.数组一定要告诉元素个数和数据类型
    2.函数一定有形参和返回值类型
    3.数组指针,函数指针,*和指针要括起来。
    分析:

  • char ((x())[])()
    简化:
  • typedef char (f)();
    typedef f g[];
    x可以简化为g 
    x(),所以x是一个返回值指向g类型的指针的函数。

g是一个指针数组,数组内的元素都是指针,指针的类型是一个返回值为char的函数指针。

  1. char ((x[3])())[5]
简化为char (*A)[5],这是一个数组指针,指向一个有五个char型元素的数组
A是(*x[3])(),相当于(*B)(),这是一个函数指针,指向函数B
B是x[3],是一个数组。
 
 
 

 

exec1

execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。

exec2

它与exec1的区别就在于exevp函数的第一个参数,exec1传的是ls,exec2直接用的arglist[0],不过由定义可得这两个等价,所以运行结果是相同的。

exec3

这个代码指定了环境变量,然后依然执行了ls -l指令,成功后没有返回,所以最后一句话不会输出。运行结果同exec1.

 


 

exec1

 

 

exec2

 

exec3

 


 

forkdemo1    

这个代码先是打印进程pid,然后调用fork函数生成子进程,休眠一秒后再次打印进程id,这时父进程打印子进程pid,子进程返回0.

forkdemo2  

这个代码调用两次fork,一共产生四个子进程,所以会打印四个aftre输出。

forkdemo3  

fork产生子进程,父进程返回子进程pid,不为0,所以输出父进程的那句话,子进程返回0,所以会输出子进程那句话。

 


 


forkdemo1
     forkdemo2     forkdemo3

 


 

forkdemo4

 


 

forkgdb 父进程打印是先打印两句,然后休眠一秒,然后打印一句,子进程先打印一句,然后休眠一秒,然后打印两句。并且这两个线程是并发的,所以可以看到在一个线程休眠的那一秒,另一个线程在执行,并且线程之间相互独立互不干扰。

 


 

 

forkgdb


 

psh1                                                                                             psh2

 


 
 testbuf1

效果是先输出hello,然后换行。之后不退出。

 testbuf2

效果同上。

 testbuf3 将内容格式化输出到标准错误、输出流中。


 

testbuf  :     testbuf1       testbuf2         testbuf3


 

testpid

输出当前进程pid和当前进程的父进程的pid。

testpp   
testsystem system()——执行shell命令,也就是向dos发送一条指令。这里是后面可以跟两个参数,然后向dos发送这两个命令,分别执行。如下图,输入ls和dir两个指令后,可以看到分别执行了。

 


 

testpid   testpp   testsystem

 


 

waitdemo1

如果有子进程,则终止子进程,成功返回子进程pid。结果如下图:

waitdemo2

这个比起1来就是多了一个子进程的状态区分,把状态拆分成三块,exit,sig和core。具体运行如下:

 


 

waitdemo1  waitdemo2

 

 


 

 

参考资料:

1.百度百科

2.man , grep

3.20135302博客

 

学习体会:这次代码较多,逐个运行,不能说完全吃透,但是在网上和同学博客上的注释下,看懂了一些。

 

 
posted @ 2015-11-25 20:48  20135322郑伟  阅读(212)  评论(0编辑  收藏  举报