⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p6-8.c

📁 UNIX程序设计教程
💻 C
字号:
#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <stdlib.h>#include "err_exit.h"void parse(char *, char **);void execute(char **);int main(void){        char buf[1024];        char *args[64];        for (;;) {    /* 给出提示符并读入命令 */                printf("Command: ");                if (fgets (buf, sizeof(buf), stdin) == NULL){                        printf("\n");                        exit(EXIT_SUCCESS);                }                /*  分解字符串为参数  */                parse(buf, args);                /*  执行命令  */                execute(args);        }}/*  parse--分解buf中的命令为独立的参数  */void parse(char *buf, char **args){        while (*buf != '\0') {                /* 用空字符'\0'替代空白字符使得前一参数以空字符结束  */                while ((*buf==' ')||(*buf=='\t'||(*buf=='\n')))                             *buf++ = '\0';                /*  保存该参数 */                *args++ = buf;                /*  跳过此参数  */                while ((*buf!='\0') && (*buf!=' ')                                        && (*buf!='\t') && (*buf!='\n')) buf++;        }        *args='\0';}/*  execute--派生一子进程执行此程序  */void execute(char **args){        int pid, status;        /*  创建一子进程  */        if ((pid=fork()) <0)                 err_exit("fork");        /*  子进程执行if内的代码  */        if (pid==0) {                execvp(*args,args);                err_exit("fork");    }        /*  父进程等待子进程完成  */        waitpid(pid, &status, 0);        pr_exit(status);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -