标签: flush

刷新Perl STDIN缓冲区

有没有办法清除Perl中的STDIN缓冲区?我的程序的一部分有很长的输出(有足够的时间让某人输入几个字符)并在输出之后我要求输入,但是如果在输出期间输入了字符,它们将被"添加"到输入中输入的任何内容部分.这是我的问题的一个例子:

for(my $n = 0; $n < 70000; $n++){
   print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
Run Code Online (Sandbox Code Playgroud)

输出将包括从for循环输出期间输入的任何字符.我怎么能禁用STDIN或刷新STDIN缓冲区(或任何其他方式不允许额外的字符在调用之前插入STDIN)?

perl buffer stdin flush

10
推荐指数
1
解决办法
6947
查看次数

std :: endl崩溃使用MinGW编译的Windows 8

我有3台计算机,其中两台使用Windows 8.使用最新版本的MinGW的g ++(4.8.1-4),我的hello world程序会在我在Windows 8计算机上编译和运行时冻结,但不会在Windows 7中运行.

#include <iostream>
int main()
{
    std::cout << "Hello, World!" <<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这在g ++中编译得很好,但运行a.exe会显示"Hello,World!" 然后会弹出一个窗口并说"a.exe已停止工作,Windows可以在线检查程序的解决方案......"等.

有没有人见过这个问题.

另外,我试过"std :: cout <<"Hello,World!\n"<< std :: flush;" 这也有同样的问题.似乎每个刷新缓冲区的函数都会导致崩溃.

按照Eric的建议,我重新编译了程序并在gdb中运行它并得到以下输出:

Program received signal SIGILL, Illegal instruction. 
0x00405065 in _Jv_RegisterClasses ()
Run Code Online (Sandbox Code Playgroud)

c++ mingw flush endl

10
推荐指数
1
解决办法
2250
查看次数

什么是'冲洗溪流'的意思?

我已经读过,'\n'比'endl'更适合c ++中的新行,因为'endl'插入新行并刷新流.请告诉我什么是冲洗流?

c++ flush

10
推荐指数
3
解决办法
6029
查看次数

每次使用gfortran Fortran 90程序写入后,如何将输出刷新到文件?

我在Fortran 90程序中运行一个循环,它为循环的每次迭代输出数值到输出文件.问题是输出没有保存到文件中,而是保存了很多步骤.如何让它冲洗每一步?

示例代码:

open(unit=1,file='output')

do i = 1, 1000
 write(1,*) i
end do

close(unit=1)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

fortran flush gfortran

9
推荐指数
2
解决办法
1万
查看次数

Python的打印函数在调用时刷新缓冲区?

可能重复:
如何刷新Python打印输出?
python中的无缓冲的stdout(如在python -u中)来自程序内部

我有以下代码来刷新输出缓冲区.

print 'return 1'
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

我可以设置打印功能,以便在调用时自动刷新缓冲区吗?

python flush

9
推荐指数
1
解决办法
7475
查看次数

如何使用非官方Android Market API?

我正在尝试示例代码here.但我的应用程序崩溃了.

我添加了日志记录,发现它崩溃了session.flush();所以我删除了该行,它不再崩溃了.

但它没有达到onResult回调.

package com.mytest.app;

import com.gc.android.market.api.MarketSession;
import com.gc.android.market.api.MarketSession.Callback;
import com.gc.android.market.api.model.Market.AppsRequest;
import com.gc.android.market.api.model.Market.AppsResponse;
import com.gc.android.market.api.model.Market.ResponseContext;

import android.app.Activity;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.util.Log;

public class MarketAPITestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.d("Market API", "Started");

        String email = "somebody@gmail.com";
        String pass = "mypass";
        String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);

        MarketSession session = new MarketSession();
        session.login(email,pass);
        session.getContext().setAndroidId(AndroidId);

        String query = "maps";
        AppsRequest …
Run Code Online (Sandbox Code Playgroud)

java android flush google-play

9
推荐指数
1
解决办法
8670
查看次数

为什么我们必须在扩展的PersistenceContext中手动flush()EntityManager?

在我们的J2EE应用程序中,我们使用EJB-3有状态bean来允许前端代码创建,修改和保存持久性实体(通过JPA-2管理).

它看起来像这样:

@LocalBean
@Stateful
@TransactionAttribute(TransactionAttributeType.NEVER)
public class MyEntityController implements Serializable
{   
    @PersistenceContext(type = PersistenceContextType.EXTENDED)
    private EntityManager em;

    private MyEntity current;

    public void create()
    {
        this.current = new MyEntity();
        em.persist(this.current);
    }

    public void load(Long id)
    {
        this.current = em.find(MyEntity.class, id);
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public void save()
    {
        em.flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

非常重要的是,为了避免过早提交,只有save()方法在一个事务中,所以如果我们调用create(),我们不会在数据库中插入任何内容.

奇怪的是,在该save()方法中,我们必须调用em.flush()才能真正命中数据库.事实上,我试过并发现我们也可以打电话em.isOpen()或者em.getFlushMode()说"与em相关".

我不明白这一点.就像save()在事务中一样,我认为在方法结束时,事务将被提交,因此持久性实体管理器会自动刷新.为什么我必须手动冲洗它?

谢谢,泽维尔

java persistence ejb jpa flush

9
推荐指数
1
解决办法
2万
查看次数

在 bash 中,如何强制刷新打印到终端的不完整行

我正在编写一个脚本,它执行如下操作:

echo -n "Doing stuff, wait for it... "
do_stuff
(($?==0)) && echo SUCCESS || echo FAILURE
Run Code Online (Sandbox Code Playgroud)

请原谅糟糕的 bash 技能。无论如何,问题是该行的第一部分在do_stuff完成之前不会被打印 - 虽然对我来说用户知道我接下来要运行什么很重要。对我来说也很重要,因为我很迂腐,不打印换行符。因此,文本位于缓冲区中并且不会被刷新。

这个问题非常相似,但是OP对事情基本上是满意的。我不是。如果到了紧要关头,我什至愿意使用与诅咒相关的东西(但请记住,这毕竟是一个 shell 脚本)。

bash terminal newline flush fflush

9
推荐指数
1
解决办法
4701
查看次数

ffmpeg:每个块刷新输出文件

我正在使用 ffmpeg 实时生成 10 秒的正弦音。不幸的是,ffmpeg 似乎很少刷新输出文件,每隔几秒钟。我希望它每 2048 字节刷新一次(= 2 字节样本宽度 * 1024 样本,我的自定义块大小)。

以下脚本的输出:

import os
import time
import subprocess

cmd = 'ffmpeg -y -re -f lavfi -i "sine=frequency=440:duration=10" -blocksize 2048 test.wav'    

subprocess.Popen(cmd, shell=True)

time.sleep(0.1)
while True:
    print(os.path.getsize("test.wav"))
    time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

好像:

[...]
78
78
78
262222
262222
262222
[...]
Run Code Online (Sandbox Code Playgroud)

#ffmpeg IRC 上的用户建议使用

ffmpeg -re -f lavfi -i "sine=frequency=1000:duration=10" -f wav pipe: > test.wav
Run Code Online (Sandbox Code Playgroud)

哪个有效。但这可以仅使用 ffmpeg 来实现吗?

audio ffmpeg flush audio-streaming

9
推荐指数
1
解决办法
5119
查看次数

std :: endl << std :: flush有目的吗?

std::flush就在std::endl我正在查看遗留代码的所有内容之后.当我第一次看到这个,我的想法是这是在看的描述冗余std::endlstd::flush在:

http://en.cppreference.com/w/cpp/io/manip/endl

http://en.cppreference.com/w/cpp/io/manip/flush

以下是我在遗留源代码中看到的示例:

std::cout << "Generic Notification" << std::endl << std::flush;
Run Code Online (Sandbox Code Playgroud)

但是,由于许多高级软件开发人员多年来都看过这个代码,我想知道是否有一些我遗漏的细节.有没有任何目的有一个std::flushstd::endl

c++ flush endl

9
推荐指数
3
解决办法
808
查看次数