程序我们要使用GNU的gcc编译器。gcc编译器有许多选项一般来说我们只要知道其中的几个就够了o选项我们已经知道了表示我们要求输出的可执行文件名c选项表示我们只要求编译器输出目标代码而不必要输出可执行文件g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息知道了这三个选项我们就可以编译我们自己所写的简单的源程序了如果想要知道更多的选项可以查看gcc的帮助文档可以用ma
gcc来查看那里有着许多对其它选项的详细说明。
文件拷贝的C程序主要用到如下几个函数
ope
打开文件
close关闭文件
read读操作
write写操作
ope
函数有两个形式如下
i
tope
co
stcharpath
amei
tflags
i
tope
co
stcharpath
amei
tflagsmode_tmode
其中path
ame是我们要打开的文件名包含路径名称缺省是认为在当前路径下面flags可以去下面的一个值或者是几个值的组合组合使用时候用竖线“”隔开。
O_RDONLY以只读的方式打开文件
O_WRONLY以只写的方式打开文件
O_RDWR以读写的方式打开文件
O_APPEND以追加的方式打开文件
O_CREAT创建一个文件创建一个不存在的文件。
O_EXEC如果使用了O_CREAT而且文件已经存在就会发生一个错误
O_NOBLOCK以非阻塞的方式打开一个文件
O_TRUNC如果文件已经存在则删除文件的容
前面三个标志只能使用任意的一个
如果使用了O_CREATE标志那么我们要使用ope
的第二种形式还要指定mode标志用来表示文件的访问权限
b程序源代码见实现文件拷贝的源程序
c程序运行结果
f源程序通过编译后会生成可执行文件mycopy执行mycopy之前usr目录下的文件atxt容见图1文件btxt容见图2。
图1执行mycopy前atxt的容
图2执行mycopy前btxt的容
执行mycopy后目录usr下文件btxt容见图3由图可知文件atxt的容正确无误的拷贝到了文件btxt中故程序运行结果完全正确。
图3执行mycopy后btxt的容
二编一个C程序其容为分窗口同时显示三个并发进程的运行结果。要求
用到Li
ux下的图形库。
a任务分析
通俗的讲程序是一个包含可以执行代码的文件是一个静态的文件。
而进程是一个开始执行但是还没有结束的程序的实例。一个程序可能有许多进程而每一个进程又可以有许多子进程依次循环下去而产生子进程为了区分各个不同的进程系统给每一个进程分配了一个ID就象我们的以便识别为了充分的利用资源系统还对进程区分了不同的状态将进程分为新建运行阻塞就绪和完成五个状态。
f当一个进程调用了fork以后系统会创建一个子进程这个子进程和父进程不同的地方只有他的进程ID和父进程ID其他的都是一样就像父r