从标准输入读入命令并执行【UNIX 环境高 3ff0 级编程】
2012-10-28 20:52
453 查看
main.c
#include "apue.h" #include <sys/wait.h> int main(void) { char buf[MAXLINE]; pid_t pid; int status; printf("%%");//printf requires %% to print % while(fgets(buf,MAXLINE,stdin) != NULL){ if (buf[strlen(buf)-1] == '\n'){ buf[strlen(buf)-1] = 0;//replace newline with null } if ((pid = fork()) < 0){ err_sys("fork error"); }else if (pid == 0){ //child execlp(buf, buf, (char *)0); err_ret("couldn't execute: %s",buf); exit(127); } if ((pid = waitpid(pid, &status, 0)) < 0){ err_sys("waitpid error"); } printf("%%"); } exit(0); }apue.h
#ifndef _APUE_H #define _APUE_H #include <unistd.h> #include <stdio.h> #define MAXLINE 4096 void err_sys(const char *,...); void err_ret(const char*,...); #endifapue.c
#include "apue.h" #include <errno.h> #include <stdarg.h> static void err_doit(int,int,const char*,va_list); void err_ret(const char *fmt,...) { va_list ap; va_start(ap,fmt); err_doit(1,errno,fmt,ap); va_end(ap); exit(1); } void err_sys(const char *fmt,...) { va_list ap; va_start(ap,fmt); err_doit(1,errno,fmt,ap); va_end(ap); exit(1); } void err_quit(const char *fmt,...) { va_list ap; va_start(ap,fmt); err_doit(0,0,fmt,ap); va_end(ap); exit(1); } static void err_doit(int errnoflag, int error, const char *fmt,va_list ap) { char buf[MAXLINE]; vsnprintf(buf, MAXLINE, fmt, ap); if (errnoflag){ snprintf(buf + strlen(buf), MAXLINE-strlen(buf), ": %s",strerror(error)); } strcat(buf, "\n"); fflush(stdout); fputs(buf,stderr); fflush(NULL); }该程序的主要限制是不能向所执行的命令传递参数
相关文章推荐
- UNIX环境高级编程 chat1 从标准输入中读取命令执行
- UNIX环境高级编程1-5从标准输入读命令并执行
- 1-5 从标准输入读入命令并执行
- Unix学习笔记------书本例题编程实例------从标注输入读入然后从标准输出输出
- UNIX环境高级编程程序1-2将标准输入复制到标准输出
- UNIX环境高级编程-第5章- 标准 I/O 库
- UNIX环境高级编程----标准I/O
- 从标准输入读命令并执行
- Linux/UNIX脚本编程学习笔记(0807)---输入、输出、命令执行
- APUE 1-7 从标准输入读命令并执行
- UNIX环境编程基本函数——标准IO
- 1.5 从标准输入读取命令并执行
- UNIX环境高级编程——第二章 UNIX标准及实现
- APUE 1-10 从标准输入读命令并执行
- UNIX环境编程学习笔记(13)——文件I/O之标准I/O流
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
- unix环境高级编程-输入和输出
- 2.UNIX 环境高级编程--UNIX标准及实现
- UNIX环境高级编程(第三版)学习笔记(二、UNIX标准及实现)
- UNIX环境高级编程(五)标准IO库