
cat a | grep -E "[a-z]{5,}"
2. $ find / -name "test.c" -type f -mtime +3 -user greek -exec rm {} \的含义。
找出并且删除根目录及其子目录下 所有文件名为test.c的普通的文本文件 ,且该文件的最后修改时间以当前时间为参照大于3天时间
3. 在一个程序崩溃时,它一般会在指定目录下生成一个core文件。如果没生成core文件,可能是什么原因?怎么解决?
答:用“ulimit -c”命令查看当前系统设置的core文件的大小门限值
一般情况是core文件的大小超过了这个值
执行 “ulimit -c unlimited”命令后, *** 作系统不在限制core文件大小,或者把unlimited 替换成一个适当的值。
4. 执行命令 ls –l 时,某行显示如下:
-rw-r--r-- 1 chris chris 207 jul 20 11:58 mydata
(1)用户chris对该文件具有什么权限?
答:chris对mydata文件具有读写的权限
(2)如何使任何用户都可以读写执行该文件?
答:chmod 777 mydata
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=0semctl(____________________)//设置信号量编号为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 1024
void 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()
}
答最多有4个进程
首先第一次调用fork 主进程会产生一个pid1的子进程
然后pid1和主进程会分别调用一次pid2 = fork()分别再产生一个子进程因此一共最多4个进程
2. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。
#!/bin/bash #(1)定义该shell脚本由哪中类型的shell解释器解析
dir=$1#(2)将shell程序的第一个命令行参数付给变量dir
if [ -d $dir ]#(3)判断dir的值是否是一个目录
then cd $dir #(4)如果dir是目录则进入该目录
for file in *
do
if [-f $file ]#(5)判断file是否为一个文件
then
cat $file #(6)打开文件,将文件内容输出到标准输出流中
echo “end of file $file”
fi
done
else
echo “bad directory name $dir”
fi
3. 阅读Makefile文件,回答以下问题:
(1) 此Makefile文件的主要功能是什么?
编译f1.c f2.c f3.c三个文件,最终生成动态链接库libmys.so
(2) 此Makefile文件包含多少个规则?它们分别是什么?
包含4个规则
第一个 “TGT = $(patsubst %.c, %.o, $(SRC))”
将$(SRC)目录下的所有以.c为后缀的文件替换成.o结尾,且存入TGT变量中
第二个 “%.o : %.c
cc -c $<”
用cc命令依次将三个源文件编译成目标文件
第三个
libmys.so : $(TGT)
cc -shared -o $@ $(TGT)
用上一步生成的3个中间文件生成动态链接库libmys.so
第四个
clean:
rm -f $(TGT)
执行 make clean 后 会删除所有的中间文件即.o文件
(3) 使用此Makefile文件可以生成目标文件f2.o吗?为什么?
答:可以,因为该makefile的逻辑是先生成所有的.o文件,然后再生成动态链接库。
all : libmys.so
SRC = f1.c f2.c f3.c
TGT = $(patsubst %.c, %.o, $(SRC))
%.o : %.c
cc -c $<
libmys.so : $(TGT)
cc -shared -o $@ $(TGT)
clean:
rm -f $(TGT)
编程题没做,楼主一、见谅,有时间做了补充下答案
程序刚开始运行时,一个进程(父进程) A, 第一次 fork 后,产生子进程 B此时,
A 中的 pid1 = B的pid
B 中的 pid1 = 0
然后 A B 分别进行第二次 fork, 分别产生 Ac Bc 两个子进程,此时
A 中的 pid1 = B的pid, pid2 = Ac 的pid
Ac 中的 pid1 = B 的pid, pid2 = 0
B 中的 pid1 = 0, pid2 = Bc 的pid
Bc 中的 pid1 = 0, pid2 = 0
所以只有 Bc 进程会打印 printf(“A:my pid is:%d\n”,getpid())
只有Ac 会打印 printf(“B:my pid is:%d\n”,getpid())
21. shell是用户和Linux内核之间的,它是命令语言、命令解释程序及程序设计语言的统称。(接口)--------------------------------------------------------------------------------
22. 在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。我的/etc/fstab文件如下:
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
在/etc/fstab文件里,第一列是挂载的文件系统的设备名,第二列是,第三列是挂载的文件系统类型,第四列是挂载的选项,选项间用逗号分隔。 (分数:3,完成次数:99)
(挂载点)
--------------------------------------------------------------------------------
23. linux是一个真正的多任务和分时 *** 作系统,允许多个用户在相同的机器上一次运行很多程序。(正确)
正确 错误
--------------------------------------------------------------------------------
24. apache是实现internet上文件共享应用服务器的应用程序。(错误)
正确 错误
--------------------------------------------------------------------------------
25. RedHat LINUX安装时自动创建了根用户(正确 )
正确 错误
--------------------------------------------------------------------------------
26. RedHat Linux使用 ls -all 命令将列出当前目录中的文件和子目录名。(错误)
正确 错误
--------------------------------------------------------------------------------
27. Linux的历史可以追溯到(A)1990年,Linus Torvalds还是(B)荷兰赫尔辛基大学的一名学生,最初用(C)汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(用于 *** 作系统教学、很小的Unix)中得到灵感,发誓要写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序、一个小的文件系统......,这样0.0.1版本的Linux就出来了(分数:1,完成次数:99)
A B C
(B,应该是芬兰,不是荷兰!)
--------------------------------------------------------------------------------
补充说明:27题为纠错题,找到错误的地方。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)