博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用标准C实现shell功能(转)
阅读量:2452 次
发布时间:2019-05-10

本文共 1073 字,大约阅读时间需要 3 分钟。

用标准C实现shell功能(转)[@more@]

#include

#include

#include

#include

#include

#include

#define SHELL_NAME "sh1"

#define PROMPT_ENVIRONMENT_VARIABLE "PROMPT"

char *prompt;

int main(int argc, char **argv)

{

char cmd[80];

int statval;

/* Determine prompt value. */

if ((prompt = getenv(PROMPT_ENVIRONMENT_VARIABLE)) == NULL)

prompt = SHELL_NAME ":";

/* Process commands until exit, or death by signal. */

while (1)

{

/* Prompt and read a command. */

printf(prompt);

gets(cmd);

/* Process built-in commands. */

if(strcasecmp(cmd, "exit") == 0)

break;

/* Process non-built-in commands. */

if(fork() == 0) {

execlp(cmd, cmd, NULL);

fprintf(stderr, "%s: Exec %s failed: %s ", argv[0],

cmd, strerror(errno));

exit(1);

}

wait(&statval);

if(WIFEXITED(statval))

{

if(WEXITSTATUS(statval))

{

fprintf(stderr,

"%s: child exited with status %d. ",

argv[0], WEXITSTATUS(statval));

}

} else {

fprintf(stderr, "%s: child died unexpectedly. ",

argv[0]);

}

}

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-944582/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-944582/

你可能感兴趣的文章
实习一年算工作一年吗?_如何在不到一年的时间里获得开发人员的工作
查看>>
使用Express和MongoDB构建CRUD应用程序-第2部分
查看>>
node.js ejs_如何在Node.js应用程序中使用EJS模板
查看>>
lynda ux_UX编排原理
查看>>
javascript 编码_我们的1,600小时JavaScript编码课程
查看>>
种子接近,随机数也接近吗_接近代码,接近爸爸
查看>>
retrofit2.6.0_RxAndroid和Retrofit 2.0
查看>>
创建微信机器人和女朋友聊天_创建聊天机器人
查看>>
scrum master_从Scrum Master到工程副总裁:职称为何重要
查看>>
sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法
查看>>
基本SQL命令-您应该知道的数据库查询和语句列表
查看>>
css命名_CSS命名约定将节省您的调试时间
查看>>
帮助中心 开源_对开源的贡献帮助我获得了Microsoft的实习机会。 这就是它可以为您提供帮助的方式。
查看>>
尼古拉斯 android_圣尼古拉斯和Alexa的访问
查看>>
准确性 敏感性 特异性_如何掌握类型特异性的艺术
查看>>
零基础学习ruby_学习Ruby:从零到英雄
查看>>
figma下载_Figma重新构想的团队库
查看>>
graphql tools_声明式GraphQL:编写更少的代码,并使用graphql-tools完成更多工作
查看>>
惯用过程模型_惯用的Ruby:编写漂亮的代码
查看>>
json数据转换成表格_电子表格会让您失望吗? 将行数据转换为JSON树很容易。
查看>>