- 论坛徽章:
- 0
|
编写一程序,实现在程序运行时通过系统调用fork( )创建两个(或两个以上)子进程,使父、子三进程并行,并利用nice ( ) 改变各进程的优先级,观察不同情况下进程调度效果的区别。
while (TRUE) { /* repeat forever */
type_prompt( ); /* display prompt */
read_command (command, parameters) /* input from terminal */
if (fork() != 0) { /* fork off child process */
/* Parent code */
waitpid( -1, &status, 0); /* wait for child to exit */
} else {
/* Child code */
execve (command, parameters, 0); /* execute command */
}
&&&在以上的基础上,对父、子进程分别作如下安排:父进程建立一管道pipe文件,父子共同在此pipe文件上操作,子进程负责向该pipe文件写信息,父进程则从中读信息并输出到屏幕上。
int pipe(int fd[2]) 将创建一个管道和两个文件描述符:fd[0], fd[1]。 其中fd[0] 文件描述符将用于读操作,而fd[1] 文件描述符将用于写操作。 pipe()的成功返回值是0,如果创建失败将返回-1并将失败原因记录在errno中。 使用int pipe(int fd[2])创建管道的标准编程模式如下: 1) 创建管道; 2) 使用fork( )方法创建两个(或多个)相关联的进程; 3) 使用read()和write()方法操作管道; 4) 管道使用完毕后用close(int fd)方法关闭管道。 |
|