编一个UNIX平台上的C程序。父进程在创建了子进程后,显示子进程的标识数,并在子进程终止后,打开子进程创建的文件cmdfile,从文件中读入一个Shell命令串,并执行该命令串。子进程在当前目录下创建一个只有本用户可读可写的文件cmdfile,写入从键盘读

admin2016-05-14  17

问题 编一个UNIX平台上的C程序。父进程在创建了子进程后,显示子进程的标识数,并在子进程终止后,打开子进程创建的文件cmdfile,从文件中读入一个Shell命令串,并执行该命令串。子进程在当前目录下创建一个只有本用户可读可写的文件cmdfile,写入从键盘读入的Shell命令串后,关闭该文件,并终止运行。

选项

答案在程序清单17-3中,父进程先创建了一个子进程。子进程创建了一个文件,并将从终端上读入的命令写入文件;父进程打开文件后,从文件中读入命令串,并用Execl系统调用装入/bin/sh,执行该命令。 程序清单17-3:file.c #include<fcntl.h> #include<stdio.h> #include<unistd.h> /*execl()*/ #include<string.h> main() { int pid,fd; char cmd[256]; pid=fork(); switch(pid){ case-1: printf("System Call Error\n"); break; case 0; /*子进程*/ fd=creat("cmdfile",0600); /*创建文件*/ gets(cmd); /*从键盘输入命令串* write(fd,cmd,strlen(cmd)+1); /*写文件*/ close(fd); break; default: /*父进程*/ wait(NULL); /*等待子进程终止*/ printf("Child’s PID=%d\n",pid); fd=open("cmdfile",o_RDONLY); /*打开文件*/ read(fd,cmd,sizeof(cmd)); execl("/bin/sh","sh","-c",cmd,(char*)0);/*执行该命令串*/ } }。

解析
转载请注明原文地址:https://jikaoti.com/ti/90EaFFFM
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)