您的程序:
您将编写两个程序(都使用相同的语言)。存储程序从STDIN中获取一个字符串,并将其存储在持久的位置(请参见下文),然后无错误退出。检索程序不输入任何内容,检索存储的字符串,然后将其打印到STDOUT。
持久性的客观测试:
您应该能够在本地计算机上运行存储程序,然后重新启动本地计算机,然后调用本地计算机上的检索程序。只要通过此重新启动测试,就可以随意存储字符串(即使在Web上)。
测试用例:
存储然后检索:
echo foo | Store
Retrieve
foo
重复存储应覆盖(如set()方法):
echo foo | Store
echo bar | Store
Retrieve
bar
重复检索是非破坏性的(例如get()方法):
echo foo | Store
Retrieve
foo
Retrieve
foo
在调用存储之前进行检索:
您无需为此担心。您的检索程序可以假定该存储程序已在过去的某个时间运行。
输入/输出灵活性。
人们要求我将其从严格的STDIN / STDOUT扩展到标准IO规则。我不能,因为这会引入太多漏洞。一些标准IO选项已经以持久方式存储了输入,例如“程序可以从文件中获取输入”。我想比严格的STDIN和STDOUT更灵活,但不要打开闸门。
从标准的IO规则线程中,我正在挑选那些不会克服挑战的规则:
如果需要,程序可以通过GUI提示符和命令行提示符进行输入
程序可以通过在屏幕上显示来输出,包括GUI对话框
程序可以输出到STDERR,但实际上仍然不会引发错误。
如果使用备用选项,则必须是用户交互的。除了将输入输入到程序中,将其输入程序提供的提示中或将输入作为程序的命令行参数输入之外,用户无需执行任何其他工作。除了运行您的检索程序之外,用户无需执行任何其他操作即可看到屏幕上显示的输出或发送到STDOUT或STDERR的输出。
允许的假设:
- 您的两个程序将在同一目录中运行
- 您的程序对该目录具有读写权限
- 您创建的文件将在重启后保留下来(不在临时目录中)
- 允许使用不属于字符串的尾随换行符。没有其他尾随空格
这是代码高尔夫球,您的得分是这两个程序的字节总和。
Store
吗?
echo $@>x
和cat x
有效?