- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
直接键入“make”即可运行,无需修改。 可键入”DEBUG=yes”查命令,然后键入”DEBUG=no”取消。 期中包括简单命令,管道命令模拟。
以下是MAKEFILE:
#
#
# Sample Makefile for Assignment 2
#
CFLAGS = -g -Wall -Werror -O2
CC = gcc
PROGRAM = mybash
CFILES = parser.c mybash.c
HFILE = parser.h
##################################################
#
# You shouldnt need to change anything else
#
##################################################
# compute the OFILES
OFILES = ${CFILES:.c=.o}
# all of the .o files that the program needs
OBJECTS = ${OFILES}
# How to make the whole program
${PROGRAM} : ${OBJECTS}
${CC} ${CFLAGS} ${OBJECTS} -o ${PROGRAM}
#
# File dependencies
#
${OFILES}: ${HFILE} parser.h
clean:
/bin/rm -f *.o ${PROGRAM}
头文件:
/* the states */
#define COMMAND 1
#define ARG 2
#define INFILE 3
#define OUTFILE 4
#define UNDEF 5
struct Command {
char *command;
char *args[11];
int numargs;
};
struct CommandData {
struct Command TheCommands[20]; /* the commands to be
executed. TheCommands[0] is the first command
to be executed. Its output is piped to
TheCommands[1], etc. */
int numcommands; /* the number of commands in the above array */
char *infile; /* the file for input redirection, NULL if none */
char *outfile; /* the file for output redirection, NULL if none */
int background; /* 0 if process is to run in foreground, 1 if in background */
};
extern int ParseCommandLine(char *, struct CommandData *);
头文件中函数:
#include stdio.h
#include strings.h /* for strdup */
#include parser.h
static int IsAlphaNum(char c) /* is this a valid char for a pathname or filename? */
{
if (c = A c = Z) return 1;
if (c = a c = z) return 1;
if (c = 0 c = 9) return 1;
if (c == . || c == _ || c == / || c == -) return 1;
return 0;
}
/************** COPYWORD **************
This function copies a word (token) to the appropriate field
of the struct CommandData data, and resets state. It
returns 1 if successful, 0 if it detects an error.
This is called from the function ParseCommandLine
******
文档评论(0)