我正在制作一个脚本,该脚本在任务后读取答案,然后将其写入文本文件中。我希望这个答案只是一个字符:
task1
read -n 1 answer < /dev/tty
echo $answer >> result.txt
task2
read -n 1 answer < /dev/tty
echo $answer >> result.txt
Run Code Online (Sandbox Code Playgroud)
问题是,如果我不小心按了两次键盘,第二个字符就会保留在内存中并将其写为下一个答案。
我想插入一个命令,在第一个字符写入 file.txt 后刷新内存,谢谢
我只是想知道刷新和重置之间有什么区别?为什么在示例中使用刷新后重置?如果使用flush方法擦除内存缓存,为什么还要使用reset方法?
ObjectOutputStream oos = new ObjectOutputStream(bos);
while(true){
oos.writeObject(object);
oos.flush();
oos.reset();
object.x++;
}
Run Code Online (Sandbox Code Playgroud) 我有一个bash脚本,我主要在交互模式下使用.但是,有时我会在脚本中输入一些输入.在循环中处理stdin之后,我使用"-i"(交互式)复制文件.但是,这永远不会被执行(在管道模式下),因为(我猜)标准输入还没有被刷新.为简化示例:
#!/bin/bash
while read line
do
echo $line
done
# the next line does not execute
cp -i afile bfile
Run Code Online (Sandbox Code Playgroud)
将其放在t.sh中,并执行:ls | ./t.sh
不执行读取.我需要在读取之前刷新stdin.怎么会这样呢?
此代码向用户询问数据,然后询问数字:
$ cat read.c
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int main() {
char* c = (char*) malloc(MAX * sizeof(char));
int num;
printf("Enter data (max: %d chars):\n", MAX);
fgets(c, MAX, stdin);
// how do I discard all that is there on STDIN here?
printf("Enter num:\n");
scanf("%d", &num);
printf("data: %s", c);
printf("num: %d\n", num);
}
$
Run Code Online (Sandbox Code Playgroud)
问题是,除了说明最大字符数的指令之外,没有任何东西可以阻止用户输入更多字符,随后将其读入num垃圾:
$ ./read
Enter data (max 10 chars):
lazer
Enter num:
5
data: lazer
num: 5
$ ./read
Enter data (max 10 chars):
lazerprofile …Run Code Online (Sandbox Code Playgroud) 在Hibernate中,我想知道当flushMode为AUTO时哪些条件会触发刷新?它可能很复杂(或"魔术"),但基本条件是什么?
谢谢
通过取自定义:http://www.cplusplus.com/reference/iostream/ostream/flush/,为什么存在的功能,目的是什么,你会使用它,因为这是不明确的.为什么不在每次写入流时调用flush()?
我想要一个文件对象,在写入数据时直接刷新文件,并写下:
class FlushingFileObject(file):
def write(self,*args,**kwargs):
return_val= file.write(self,*args,**kwargs)
self.flush()
return return_val
def writelines(self,*args,**kwargs):
return_val= file.writelines(self,*args,**kwargs)
self.flush()
return return_val
Run Code Online (Sandbox Code Playgroud)
但有趣的是,当我写它时它没有刷新,所以我尝试了一些包括这个的东西:
class FlushingFileObject(object):
def __init__(self,*args,**kwargs):
self.file_object= file(*args,**kwargs)
def __getattr__(self, item):
return getattr(self.file_object,item)
def write(self,*args,**kwargs):
return_val= self.file_object.write(*args,**kwargs)
self.file_object.flush()
return return_val
def writelines(self,*args,**kwargs):
return_val= self.file_object.writelines(*args,**kwargs)
self.file_object.flush()
return return_val
Run Code Online (Sandbox Code Playgroud)
冲洗.
为什么不在file此实例中进行子类化工作?
我有一个用于下载文件的Web界面.当请求进入时,我的glassfish服务器从Web服务流式传输文件,然后将内容写入输出流.我的代码工作正常,除非文件大小变得非常大(例如超过200 MB),它在浏览器中挂起显示0%已下载并且永远不会下载文件.
当我在while循环中移动flush()方法时,它也适用于大文件.我不确定将flush()放入循环是否有问题.不知道这件事实际上是如何运作的.我的代码如下:
HttpURLConnection conn = (HttpURLConnection) downloadUri.toURL().openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/pdf");
if (conn.getResponseCode() == 200) {
ServletOutputStream output;
try (InputStream inputStream = conn.getInputStream()) {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/octet-stream");
response.setHeader("Content-Length", conn.getHeaderField("Content-Length"));
response.setHeader("Content-Disposition", "attachment; filename=\"" + abbr + ".pdf\"");
output = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
}
output.flush();
output.close();
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?.感谢您对此进行调查.
目前,当我
from __future__ import print_function
从Python 2.7.6开始,我显然在添加flush关键字参数之前得到了print()版本,根据文档在Python 3.3中进行了操作.我的系统(Ubuntu)中安装的Python3是Python 3.4,我验证了它的print()函数有flush参数.
如何print()从3.4 导入功能?从哪里__future__获得较旧的打印功能?
我在Ubuntu上。当我ghci在终端上运行并执行以下操作时:
Prelude Control.Monad System.IO> forever $ getChar >>= print
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
a'a'
b'b'
C'C'
%'%'
\'\\'
1'1'
''\''
"'"'
^X'\CAN'
^?'\DEL'
^CInterrupted.
Run Code Online (Sandbox Code Playgroud)
也就是说,我在键盘上输入的字符将被刷新到输出中。我怎样才能避免这种情况,只能print以作家的身份出现?