20135220谈愈敏--信息安全系统设计基础第十周学习总结
2015-11-29 20:57
357 查看
argv
argv文件夹中的主要程序是argtest.c#include <stdio.h> #include <stdlib.h> #include "argv.h"//包含了makeargv.c和freemakeargv.c int main(int argc, char *argv[]) { char delim[] = " \t"; int i; char **myargv; int numtokens; if (argc != 2) {//如果输入的命令字符个数不等于2 fprintf(stderr, "Usage: %s string\n", argv[0]);//输出 return 1; } if ((numtokens = makeargv(argv[1], delim, &myargv)) == -1) { fprintf(stderr, "Failed to construct an argument array for %s\n", argv[1]); return 1; } printf("The argument array contains:\n"); for (i = 0; i < numtokens; i++) printf("%d:%s\n", i, myargv[i]); execvp(myargv[0], myargv); return 0; }
采取了两种运行方法,第一种是用-c将所有.c的文件编译成后缀为.o的文件,然后一起编译成可执行文件。第二种方法我尝试直接将这些所有.c的文件编译成可执行文件,运行结果是一样的,如图是Usage: 命令字符 string
env
environ.c显示PATH环境变量environvar.c
fifo
生产者和消费者问题exec
如果执行成功则函数不会返回,执行失败则直接返回-1,打印出“* * * ls is done. bye”,失败原因存于errno中。exec1/exec2运行结果一样,exec3只是将月份用英文输出。执行的是ls -l命令。
forkdemo
forkdemo1
先是打印进程pid,然后调用fork函数生成子进程,休眠一秒后再次打印进程id,这时父进程打印子进程pid,子进程返回0.forkdemo2
两次fork()共产生3个子进程,加上父进程总共有4个进程。forkdemo3
fork产生子进程,父进程返回子进程pid,不为0,所以输出父进程的那句话,子进程返回0,所以会输出子进程那句话。forkdemo4
先打印进程pid,然后fork创建子进程,父进程返回子进程pid,所以输出parent一句,休眠十秒;子进程返回0,所以输出child与之后一句。forkgdb
子进程与父进程并发运行,父进程打印是先打印两句,然后休眠一秒,然后打印一句,子进程先打印一句,然后休眠一秒,然后打印两句。psh
psh1
输入字符串并将其当做命令执行psh2
对上一个程序的完善:不断产生新的子进程输入字符串命令并执行。testbuf
testbuf1
testbuf2
这两个程序类似,fflush(stdout)相当于换行都是先输出hello,然后换行。之后不退出。
testbuf3
在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出。testpid
获取当前进程pid和当前进程父进程pidtestpp
二维数组越界申请空间。将代码改为
pp=malloc(20);
即可编译成功。
testsystem
运行时在./testsystem后面加指令会执行相应指令。system()——执行shell命令,也就是向dos发送一条指令。这里是后面可以跟两个参数,然后向dos发送这两个命令,分别执行。如下图,输入ls和dir两个指令后,可以看到分别执行了。
waitdemo
相关文章推荐
- ubuntu默认开启numlock
- sizeof和strlen的区别
- 从零开始写javaweb框架笔记6-需求分析与系统设计
- Java集合中HashMap的实现原理
- 回家了,英语学习也要抓紧了!
- 安卓消息推送解决方案
- 安卓消息推送解决方案
- 安卓消息推送解决方案
- 闲话Zynq UltraScale+ MPSoC (连载3)——启动加载
- 在eclipse使用log4j记录日志
- hdoj--2516--取石子游戏(博弈)
- Tomcat设置系统启动
- Codevs_P2711 数的划分(DP)
- hpuoj 1716: 感恩节KK专场——考试来了 【水题】【校赛】
- (未完)逆波兰计算器功能分层:
- 用MySQL创建数据库表
- 使用JDBC操作时间的注意点
- 第十二周学习总结
- hdoj--2516--取石子游戏(博弈)
- 1026. Table Tennis (30)