1. 用grep命令显示在文件a中所有包含每个字符串至少有5个连续小写字符的字符串的行。
2. $ find / -name "test.c" -type f -mtime +3 -user greek -exec rm {} \;的含义。
3. 在一个程序崩溃时,它一般会在指定目录下生成一个core文件。如果没生成core文件,可能是什么原因?怎么解决?
4. 执行命令 ls –l 时,某行显示如下: -rw-r--r-- 1 chris chris 207 jul 20 11:58 mydata(1)用户chris对该文件具有什么权限? (2)如何使任何用户都可以读写执行该文件?
5. 大学校门处要求来客登记,只有一张登记表,登记表同时只能由一个人使用,用P、V原语描述一个校外人员进入大学的过程。
三、程序填空题(每小题10分,共20分)1.阅读下面程序,请将其补充完整。#define SHMDATASIZE 1000 //共享内存大小,以字节为单位void server(void){union semun sunion;int semid, shmid;void *shmdata;char *buffer;semid=semget(_________________);//创建两个信号量sunion.val=1;semctl(____________________);//设置信号量编号为0的值sunion.val=0;semctl(____________________);//设置信号量编号为1的值shmid=shmget(____________________);shmdata=shmat(___________________);*(int *)shmdata=semid;buffer=shmdata+sizeof(int);printf("Server is running with SHM id ** %d**\n", shmid);}2.阅读下面程序,请将其补充完整。#define BUFFERSIZE 1024void locksem(int semid, int semnum){struct sembuf sb;sb.sem_num=semnum;sb.sem_op=________;//P操作sb.sem_flg=SEM_UNDO;semop(_______________________);}void unlocksem(int semid, int semnum){struct sembuf sb;sb.sem_num=semnum;sb.sem_op=________;//V操作sb.sem_flg=SEM_UNDO;semop(______________________);}void clientwrite(int semid, char *buffer){locksem(semid, 0);printf("Enter Message: ");fgets(_______________);//从键盘输入一个字符串unlocksem(semid, 1);}
四、阅读程序题(共3小题,每小题10分,共30分)
1. 运行下面程序,最多运行多少个进程?画出进程家族树。#include "stdio.h" #include "sys/types.h"#include "unistd.h"int main() { pid_t pid1; pid_t pid2; pid1 = fork(); pid2 = fork(); }
2. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。#!/bin/bash #(1)dir=$1 #(2)if [ -d $dir ] #(3)then cd $dir #(4) for file in * do if [-f $file ] #(5) then cat $file #(6) echo “end of file $file” fi done else echo “bad directory name $dir” fi
3. 阅读Makefile文件,回答以下问题:(1) 此Makefile文件的主要功能是什么?(2) 此Makefile文件包含多少个规则?它们分别是什么?(3) 使用此Makefile文件可以生成目标文件f2.o吗?为什么?all : libmys.soSRC = f1.c f2.c f3.cTGT = $(patsubst %.c, %.o, $(SRC))%.o : %.ccc -c $<libmys.so : $(TGT)cc -shared -o $@ $(TGT)clean:rm -f $(TGT)
下列脚本中,输出结果相同的是( )
(3.0分)
A、
#!/bin/bash
for ((a=1;a<=5;a=a+1))
do
echo $a
done
B、
#!/bin/bash
for a in `seq 1 1 5`
do
echo $a
done
C、
#!/bin/bash
a=1 until [ $a –gt 5 ]
do
echo $a ((a=$a+1))
done
D、
a=1
while [ $a –gt 5 ]
do
echo $a ((a=$a+1))
done