计算机本科操作系统实验课实验题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
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
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");