标签: flush

如何清除bash中的输入

我正在制作一个脚本,该脚本在任务后读取答案,然后将其写入文本文件中。我希望这个答案只是一个字符:

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 后刷新内存,谢谢

bash flush

5
推荐指数
1
解决办法
4265
查看次数

JAVA中flush()与reset()的区别

我只是想知道刷新和重置之间有什么区别?为什么在示例中使用刷新后重置?如果使用flush方法擦除内存缓存,为什么还要使用reset方法?

ObjectOutputStream oos = new ObjectOutputStream(bos);

while(true){
    oos.writeObject(object);
    oos.flush();
    oos.reset();

    object.x++;
}
Run Code Online (Sandbox Code Playgroud)

java io flush reset

5
推荐指数
1
解决办法
3749
查看次数

bash:刷新标准输入(标准输入)

我有一个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.怎么会这样呢?

bash stdin flush

4
推荐指数
1
解决办法
4644
查看次数

如何防止用户输入超过最大限制的数据?

此代码向用户询问数据,然后询问数字:

$ 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)

c stdin flush fgets

4
推荐指数
2
解决办法
3686
查看次数

在FlushMode.AUTO背后检查什么?

在Hibernate中,我想知道当flushMode为AUTO时哪些条件会触发刷新?它可能很复杂(或"魔术"),但基本条件是什么?

谢谢

java hibernate flush

4
推荐指数
1
解决办法
1385
查看次数

简单来说,ostream中flush()的目的是什么

通过取自定义:http://www.cplusplus.com/reference/iostream/ostream/flush/,为什么存在的功能,目的是什么,你会使用它,因为这是不明确的.为什么不在每次写入流时调用flush()?

c++ iostream flush ostream

4
推荐指数
1
解决办法
6259
查看次数

为什么一个文件对象刷新,而另一个没有?

我想要一个文件对象,在写入数据时直接刷新文件,并写下:

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此实例中进行子类化工作?

python file flush

4
推荐指数
1
解决办法
384
查看次数

Java文件下载挂起

我有一个用于下载文件的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)

有什么想法吗?.感谢您对此进行调查.

java outputstream flush

4
推荐指数
1
解决办法
3015
查看次数

从__future__需要Python 3.4版本的print()

目前,当我

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__获得较旧的打印功能?

python printing flush python-2.7 python-3.x

4
推荐指数
1
解决办法
1691
查看次数

如何防止输入被冲刷成输出?

我在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以作家的身份出现?

haskell input flush gnome-terminal output

4
推荐指数
1
解决办法
60
查看次数