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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一套题:文件更名

要求: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(:”r ename() 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。

#include

#include

#include < unistd.h >

#include

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

{

char *ptr=malloc(PA TH_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("/bin/ps","ps","-af",(char * )0);父进程执行execl("/bin/ls","ls","","/home/stu",(char * )0);(80分)

2.调试成功。(20分)

派生进程执行新程序*/

#include

main()

{

int pid;

while((pid=fork())==-1);

if(pid==0)

{

execl("/bin/ps","ps","-af",(char * )0);

}

else

{

execl("/bin/ls","ls","","/home/stu",(char * )0);

}

}

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

1.用fork( )编写一个创建进程的C 程序(程序名自定)。程序的功能:如果fork( )调用不成功,给出错误信息,退出;如成功,子进程执行execl("/bin/ps","ps","-af",(char * )0);父进程执行系统调用wait(NULL)把自已阻塞下来睡眠,直至子子进程执行execl("/bin/ps","ps","-af",(char * )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("/bin/ps","ps","-af",(char * )0);

exit(1);

default:

wait(NULL);

printf(“ls completed\n ”);

exit(0);

}

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

要求:

1.程序运行时,在系统中有一个父进程和两个子进程。让每一个进程显示一个字符;

2.父进程显示字符’A ’,两个子进程分别显示字符’B ’和’C ’。

3.正确写出上面功能的程序。(60分)

4.调试出程序。(40分)

1 2 3 4 5 6 7 8 9 10 #include

#include

#include

#include

main()

{

if ( fork() == 0 ) // 子进程1

{

printf("b\n");

相关文档
最新文档