GVKun编程网logo

我如何在C中实现我自己的基本unix shell?(c语言实现shell)

20

以上就是给各位分享我如何在C中实现我自己的基本unixshell?,其中也会对c语言实现shell进行解释,同时本文还将给你拓展bash–在UNIXshell中实现`sumproduct`、flash

以上就是给各位分享我如何在C中实现我自己的基本unix shell?,其中也会对c语言实现shell进行解释,同时本文还将给你拓展bash – 在UNIX shell中实现`sumproduct`、flash – 如何实现我自己的Cirrus(以前称为Stratus)服务器?、java – 如何在我自己的类中实现装箱和拆箱?、Ngnix + Gunicorn + Flask:如何找出真正的基本URL等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

我如何在C中实现我自己的基本unix shell?(c语言实现shell)

我如何在C中实现我自己的基本unix shell?(c语言实现shell)

我是一个新手处理和线程pipe理。 我的shell应该理解PATH环境variables。 它可以被设置和修改。 它以两种方式运行:交互式和批处理模式。 壳牌能够承担多个工作,比如ls; ps; wc文件; cal。 我也想让信号弄脏信号。 所以我应该处理^ K,^ c。

我知道我将不得不使用高pipe,叉子和pipe道,但不能上手。

从“ps”获得完整结果

Bash:我如何从列中具有特定值的文件中select行

如何有效地替代大文件中的模式发生

在Windows命令行语法中,破折号是什么意思?

在文件中查找二进制块

所有的unix shell都是开源的 – 所以开始的好地方可能是阅读代码。

如果您正在寻找一篇关于这个主题的优秀文章,请尝试从Linux公报中编写自己的Shell 。

另一个好的起点是看看mini-shell的源代码,只是因为它是最小的一个让你头脑发热。

你的主循环是:

读一行(使用fgets(3)为一个简单的shell, readline(3)为一个简单的shell)

解析命令

分叉并执行管道

为了解析命令,有两个常见的选择。 编写递归下降解析器或使用yacc(1)生成一个。 用yacc打开一个初始的解析器会容易yacc ,但是你完全可能会停下来调试它,而且它真的希望没有上下文。 我喜欢递归下降,但世界上其他人更喜欢使用yacc。 (技术上来说, bison 。)如果外壳真的很简单,像一个作业外壳,YACC可能是矫枉过正。

为了做词法分析,你也可以自己编辑或使用flex。

你将不需要使用任何线程。

描述主要系统调用的许多Unix书籍还实现了一个shell来说明如何以及为什么使用各种调用。 史蒂文斯和罗奇金德是两本这样的书:

W Richard Stevens,Stephen A Rago 在Unix环境下的高级编程,3rd edn

marc J Rochkind 高级Unix编程,第二版

bash – 在UNIX shell中实现`sumproduct`

bash – 在UNIX shell中实现`sumproduct`

我有一个来自脚本thescript的输出,内容如下:

202 1 0 1 0 0 0

现在我想用awk选择性地将这个数字加起来,具体取决于${SUM_MASK}的值:

SUM_MASK=1,1,0

我希望有类似的东西:

thescript | awk <SOMETHING>

其中thescript的每个数字输出乘以${SUM_MASK}中的相应数字,获得:

203

结果:
203 = 202 * 1 1 * 1 0 * 0 1 * 0 0 * 0 0 * 0 0 * 0

这与电子表格软件中的sumproduct功能类似.

下面的代码snipets可以解决这个问题,但我想避免使用进程替换:

SUM_MASK="1,0"; paste <(thescript) <(echo ${SUM_MASK} | tr ',' '\n') | awk '{ SUM += $1 * $2 } END { print SUM }'

和命名管道:

SUM_MASK="1,0"; mkfifo fA; mkfifo fB; thescript > fA & echo ${SUM_MASK} | tr ',' '\n' > fB & paste fA fB | awk '{ SUM += $1 * $2 } END { print SUM }' > result.text; rm -f fA fB

我怎么能实现这一目标?

解决方法

echo "202 1 0 1 0 0 0" |
awk -v summask="1,0" '
    BEGIN {split(summask,mask,/,/)}
    {   sumproduct=0
        for (i=1; i<=NF; i++) {
            sumproduct +=  $i * mask[i]
        }
        print sumproduct
    }
'
203

flash – 如何实现我自己的Cirrus(以前称为Stratus)服务器?

flash – 如何实现我自己的Cirrus(以前称为Stratus)服务器?

我很有兴趣使用Cirrus创建一个P2P应用程序(http://labs.adobe.com/technologies/cirrus/rtmfpgroups.html).

给出的示例与Adobe管理的服务器建立连接.

我想在我的Node.js服务器上执行此操作,我该如何实现?或者Adobe强制开发人员使用Cirrus购买Flash Media Server吗?

解决方法

好吧,你可以使用这个开源替代品 https://github.com/OpenRTMFP/Cumulus.另一种选择是购买45,000美元的Flash Media Enterprise Server.开源解决方案的问题在于adobe拥有RTmfp的一些关键专利,并且他们已经知道对开源执行它们,例如rtmfpDump( http://rtmpdump.mplayerhq.hu/) – 一个开源flash电影“下载器”,所以如果你的应用程序受欢迎,adobe可能采取行动.

然而第三种选择是启动一个flash服务器亚马逊实例.它们相当昂贵,但没有初始费用http://www.adobe.com/products/flashmediaserver/amazonwebservices/

编辑:自从我上次检查以来,看起来他们已经大大降低了使用闪存服务器的aws实例的价格,所以你可能想要研究一下,或者如果你猜测接收DMCA的风险从adobe到要低

java – 如何在我自己的类中实现装箱和拆箱?

java – 如何在我自己的类中实现装箱和拆箱?

在 Java中没有像i C那样的操作符覆盖,所以我无法弄清楚如何为我自己的类实现装箱/拆箱.

例如,当我们做这样的事情时,可能会使用Integer或Float进行装箱和拆箱:

int myVar = new Integer(25);

但是我如何在我的MyObject类中实现类似的东西呢? (在我想自己包装原始类型的情况下).有代码示例吗?

解决方法

无法为用户定义的类实现自动装箱和自动拆箱.

您当然可以提供命名方法来完成这项工作.但是,每次需要装箱或取消装箱时,您都必须明确地调用它们.

Ngnix + Gunicorn + Flask:如何找出真正的基本URL

Ngnix + Gunicorn + Flask:如何找出真正的基本URL

我有本教程中描述的Ngnix / Gunicorn / Flask设置。 在我的Python / Flask代码中,我需要确定请求发送到的域/主机。 因此,如果请求是http://example.com/myapp ,那么我需要能够在处理请求时dynamic地find“example.com”,这样我就可以将它包含在响应中。

我应该可以添加一个新域的DNSlogging,指向同一个服务器,并且仍然能够在Python代码中find新域,而不必在服务器本身上进行任何更改。 我试过找出基本URL的各种常规方法,比如request.url_root,但是它们只是显示本地代理地址(127.0.0.1:8000)。 在这种情况下使用相对path不是一个选项,因为我正在实现的协议在响应中需要一个绝对的URLpath。

任何帮助,将不胜感激,谢谢!

用于媒体文件的Flask send_from_directory

使用Flask + Nginx根据dynamicURL提供静态文件?

pip freeze> requirements.txt – 权限被sudo拒绝? (heroku-烧瓶教程)

上游过早closures连接,同时读取响应头

启动一个应用程序在heroku? 什么是procfile? 'web:'命令?

uwsgi_params文件应该放在哪里,扩展名是什么?

stream媒体服务器问题与gunicorn和烧瓶和Nginx

为什么不是Flask给我一个交互式debugging器?

如何解决导入错误,同时尝试在Apache2上使用Wsgi部署Flask

Flask + uWsgi + Nginx + Fedora 20的安装问题

我想你应该在flask config中定义SERVER_NAME变量: http : //flask.pocoo.org/docs/0.10/config/

之后,域名应该可以通过request.url_root或request.headers['Host']

您必须添加该行

include uwsgi_params;

在你的Nginx配置中。 uwsgi_params文件

今天关于我如何在C中实现我自己的基本unix shell?c语言实现shell的分享就到这里,希望大家有所收获,若想了解更多关于bash – 在UNIX shell中实现`sumproduct`、flash – 如何实现我自己的Cirrus(以前称为Stratus)服务器?、java – 如何在我自己的类中实现装箱和拆箱?、Ngnix + Gunicorn + Flask:如何找出真正的基本URL等相关知识,可以在本站进行查询。

本文标签: