第一套题:文件更名
要求:1.在系统中建立一个文件(文件名自定)。(10分)
2. 用rename函数编写一个C程序(程序名自定)更改第一点要求中的文件名(文件名自
定);在程序中应有如下基本功能:当执行文件时,使用方法出错,请给出提示,如程序名 参数1参数2,并退出;如rename函数调用不成功,给出相应的出错信息,否则,给出相应的成功信息。(60分) 3. 调试成功。(20分)
4. 用相应的命令查看调试结果。(10分)
注:rename函数原型是:itn rename( const char*oldname, const char *newname) #include
int main(int argc,char *argv[]) {
if(argc!=3) {
printf(“usage:a.out
}
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
int main(int argc,char *argv[])
{
char *ptr=malloc(PATH_MAX+1); if(argc!=2) {
printf(“usage:a.out
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
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
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
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