计算机本科操作系统实验课实验题目

2018-11-30 20:06

第一套题:文件更名

要求:1.在系统中建立一个文件(文件名自定)。(10分)

2. 用rename函数编写一个C程序(程序名自定)更改第一点要求中的文件名(文件名自

定);在程序中应有如下基本功能:当执行文件时,使用方法出错,请给出提示,如程序名 参数1参数2,并退出;如rename函数调用不成功,给出相应的出错信息,否则,给出相应的成功信息。(60分) 3. 调试成功。(20分)

4. 用相应的命令查看调试结果。(10分)

注:rename函数原型是:itn rename( const char*oldname, const char *newname) #include #include

int main(int argc,char *argv[]) {

if(argc!=3) {

printf(“usage:a.out \\n”); exit(1);

}

if(rename(argv[1], argv[2])<0)

printf(“ERROR:rename() call failed\\n”); else

printf(:”rename() call successful\\n”); exit(0); }

第二套题:改变当前目录到指定目录 要求:

1. 在系统中建立一个用建目录命令(目录名自定)。(10分)

2. 用chdir和getwd函数编写一个C程序(程序名自定)改变当前目录到指定目录,然后

打印出该目录名。在程序中应有如下基本功能:当执行文件时,使用方法出错,请给出提示,如程序名 参数,并退出;如chdir函数调用不成功,给出相应的出错信息,退出。否则,调用getwd函数,如getwd函数调用不成功,给出相应的出错信息,退出。否则,打印该目录名。(60分) 3. 调试成功。(20分)

4. 用相应的命令查看指定目录。(10分)

注:getwd函数原型是:itn getwd (char*pathbuf);它的功能确定调用进程当前工作目录的绝对路经名,复制该路经名所指、由我们自己提供的字符数组中,然后返回指向该数组的指针。调用成功返回0,否则,返回-1。chdir函数原型是:itnchdir ( const char*pathname);它的功能是pathname指定的目录成为当前目录,调用成功返回0,否则,返回-1。该程序需要有头文件:unistd.h 、stdlib.h、 limits.h。

1

#include #include #include < unistd.h > #include

int main(int argc,char *argv[])

{

char *ptr=malloc(PATH_MAX+1); if(argc!=2) {

printf(“usage:a.out \\n”); exit(1); }

if(chdir (argv[1]) <0)

{printf(“ERROR chdir call failed\\n”); exit(1);} if(getwd (ptr)==NULL)

{printf(” getwd call failed \\n”); exit(1);} printf(” cmd=%s\\n”,ptr); exit(0); }

第三套题:用fork( )编写一个创建进程的C程序 要求:

1.用fork( )编写一个创建进程的C程序(程序名自定)。程序的功能:如果fork( )调用不成功,则作空循环;如成功,子进程执行execl(\* )0);父进程执行execl(\(80分) 2.调试成功。(20分) 派生进程执行新程序*/

#include

main() {

int pid;

while((pid=fork())==-1); if(pid==0) {

execl(\ } else

2

{

execl(\ } }

第四题:用fork( )编写一个创建进程的C程序

1.用fork( )编写一个创建进程的C程序(程序名自定)。程序的功能:如果fork( )调用不成功,给出错误信息,退出;如成功,子进程执行execl(\* )0);父进程执行系统调用wait(NULL)把自已阻塞下来睡眠,直至子子进程执行execl(\* )0)完毕, 父进程并显示出子进程执行完毕的信息printf(“ls completed\\n”)。(80分) 2.调试成功。(20分) #include main() {

int pid; pid=fork(); swich(pid){ case –1:

printf(“fork failed\\n”); exit(1); case 0:

execl(\ exit(1); default:

wait(NULL);

printf(“ls completed\\n”); exit(0); }

第六题:编写一个程序,用fork系统调用创建两个了进程。 要求:

1.程序运行时,在系统中有一个父进程和两个子进程。让每一个进程显示一个字符; 2.父进程显示字符’A’,两个子进程分别显示字符’B’和’C’。 3.正确写出上面功能的程序。(60分) 4.调试出程序。(40分)

1 #include 2 #include 3 #include 4 #include 5

6 main() 7 {

8 if ( fork() == 0 ) // 子进程1 9 { 10 printf(\

3

11 exit(0); 12 } 13 else 14 { 15 if ( fork() == 0 ) // 子进程2 16 { 17 printf(\18 exit(0); 19 } 20 21 printf(\父进程 22 exit(0); 23 } 24 }

原程序:见指导书P68。

第七套题:编写一个程序,用fork系统调用创建两个了进程

要求:

1. 序运行时,在系统中有一个父进程和一个子进程。显示进程标识符; 父进程显示字符’It is a parent process!’,子进程显示’ It is a parent process!’。 2. 正确写出上面功能的程序。(60分) 调试出程序。(40分) main() { int i;

while((i=fork()==-1); printf(“i=%d\\n”,i);

if(i) printf(“It is a parent process!\\n); else printf(“It is a parent process!\\n); }

第五套题:编写一个程序,创建两个进程通信

要求:

1. 用fork( )编写一个创建进程的C程序,创建两个进程Sever和Client通信 Client发来一条信息,Sever接收一条信息。 2. 正确写出上面功能的程序。(60分)

调试出程序。(40分) 原程序:见指导书P76。

第八套题:编写一个程序,实现进程的管道通信

要求:

1. 编写一个C程序,实现进程的管道通信。使用系统调用pipe()建立一条管道。两个子进

程p1,p2分别向管道各写一句: Child1 is sending message!

4

Child2 is sending message!

父进程从管道中读出来自两个子进程的信息,显示在屏幕上。 2. 正确写出上面功能的程序。(60分) 调试出程序。(40分) 原程序:见指导书P74。

第九套题:编写一个程序,显示当前目录

要求:

1. 用getwd函数(或者get_current_dir_name())编写一个C程序(程序名自定)获取当前

目录,然后打印出该目录名。正确写出程序60分。 2. 调试成功。 40分 #include #include #include #include

int main(int argc, char* argv[]) { char *ptr=(char*)malloc(PATH_MAX+1); if(argc!=2) { printf(\ mvdir arg1\\n\ return 0; } ptr=get_current_dir_name(); if(ptr==NULL) printf(\ else printf(\ return 0; }

5


计算机本科操作系统实验课实验题目.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:附《泰州市中小学集体备课要求(试行稿)》

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: