-Linux程序设计实验报告 下载本文

修改文件权限的方式有两种:符号模式和绝对模式。

1)符号模式。使用 chmod 命令修改当前权限设置的一般形式是: chmod key file [file, ]

其中,key 由以下成分组成: [who][+| -|+][mode 】

· who 这一部分可以由下面的一个和多个字符组成: u,g,o 或 a,它们分别表示 文件主、组用户、其他用户或所有 3 种用户。默认值是 a(all)。

· 第二部分必须是以下 3 个字符中的一个: +,-,或者 =,分别表示增加、删除或 者设定。

· mode 成份可以由以下字符任意组合: r,w,或x,分别表示读、写或者执行/查 询的权限。

以上 3 个部分必须依次输入,而且它们之间没有空格。在一个命令行中可以指定多 个 key,彼此之间用逗号隔开,中间没有空格。

例如:设文件 file1 原来的权限是 rw-rw-r-- ,现在想让所有用户都具有执行权限,则 可使用以下命令: chmod a+x file1

该命令执行后,文件 file1 的权限将变成 rwxrwxr-x。 练习:

· 首先使用 ls -1命令查看文件 file1 的存取权限。 · 然后是用以下命令:

chmod g-r,o-r file1

修改 file1 的权限——组用户和其他用户都被取消对该文件的读权限。 · 最后,使用命令: ls -1 file1

核查文件 filel 存取权限的变化情况。

2)绝对模式。在 chmod 命令中可以使用数字表示不同的权限。

· key这一部分可由 3 个或多个数字组成,其中每一个数字表示一类用户 (文件主、 组用户、其他用户 )的权限。

· 每个数字都表示不同的权限,如: r=4(100),w=2(010),x=(001)l。

如果某种权限被禁用,则对应的值为 0。表示权限值的数字范围从 0 到 7。

key部分可以形成一个 3 位数字,其中第一位表示文件主权限, 第二位表示组用 户权限,第三位表示其他用户权限。 例如:符号模式 rw- rw- r-- 绝对模式 6(110) 6(110) 4(100) 例如:

运行一下命令,把文件 filel 的权限改为对所有用户都有读和写的权限: chmod 666 file1

用 ls -1命令和查文件 file1 的权限。 (9) 使用命令 cd ../.. ,你将工作目录移到了什么地方 ? 五、实验体会

通过本次实验,了解了文件的一些相关操作,收获颇丰。

16

实验报告

组别 实验项目名称

姓名

实验四进程编程

同组实验者 实验日期

第 15 周周四 9,10 节

教师评语

实验成绩

一、实验目的及要求

掌握 Linux 进程编程的基本方法。 二、实验内容步骤: 1、启动一个新进程 #include

指导教师 廉文娟

#include void main() {

intresult_code;

printf(\

result_code=system(\{ printf(\); }

if(result_code==-1) {

printf(\} else{

printf(\} }

运行结果如图:

17

2、exec系列函数 #include #include #include void main() {

printf(\printf(\

char*constps_argv[]={\

char*constps_envp[]={\execv(\printf(\}

运行结果如下:

3、复制进程映像, folk () #include #include #include #include int main() {

18

pid_t pid;

char *message; int n;

printf(\pid = fork(); switch(pid) {

Case-1:perror(\break;

case 0:message=\n=8; break;

default:message=\n=3; break; }

for(;n>0;n--) {

puts(message); sleep(1); }

exit(0); }

运行结果如图:

分裂后父子进程是彼此相互独立运行的,所以要想让父进程等待子进程,只需使用 wait()系统调用: #include #include

19

#include #include #include int main() {

Pid-t pid;

char *message; int n;

int exit_code;

printf(\pid = fork(); switch(pid) {

case -1:perror(\exit(1);

case 0:message = \n = 8; exit_code = 37;

break; default:message = \n= 5;

exit_code = 0; break; }

for(;n>0;n--) { puts(message);

sleep(1); }

if(pid != 0) {

int stat_val; pid_t child_pid;

child_pid = wait(&stat_val);

printf(\{

printf(\} Else {

printf(\;

20