标签: stdout

使用bash:将整数的位表示写入文件

我有一个二进制数据文件,我需要在某个位置替换几个字节.我想出以下内容将bash指向偏移并告诉我它找到了我想要的地方:

dd bs=1 if=file iseek=24 conv=block cbs=2 | hexdump
Run Code Online (Sandbox Code Playgroud)

现在,使用"file"作为输出:

echo anInteger | dd bs=1 of=hextest.txt oseek=24 conv=block cbs=2
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好,我可以查看十六进制编辑器中所做的更改.问题是,"anInteger"将被写为该整数的ASCII表示(这是有意义的)但我需要编写二进制表示.

我想为此使用bash,脚本应该在尽可能多的系统上运行(我不知道目标系统是否会安装python或其他任何东西).

如何告诉命令将输入​​转换为二进制(可能是十六进制)?

unix bash stdout binaryfiles

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

如何在C#中重定向IronPython的标准输出?

我有以下内容:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        try
        {
            var strExpression = @"
            import sys
            sys.stdout=my.write
            print 'ABC'
            ";
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();
            var sourceCode = engine.CreateScriptSourceFromString(strExpression);
            scope.SetVariable("my", this);
            var actual = sourceCode.Execute<string>(scope);
            textBox1.Text += actual;
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    public void write(string s)
    {
        textBox1.Text += s;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个Exception说没有write.

我做错了什么?

c# redirect ironpython stdout

15
推荐指数
1
解决办法
7713
查看次数

在Java中捕获标准输出的内容

我正在调用一个在我的控制台/标准输出中打印一些字符串的函数.我需要捕获这个字符串.我不能修改正在进行打印的函数,也不能通过继承来改变运行时行为.我无法找到任何允许我这样做的预定义方法.

JVM是否存储打印内容的缓冲区?

有谁知道有助于我的Java方法?

java stdout println

15
推荐指数
3
解决办法
2万
查看次数

从C中的stdout输出系统命令

我正在Android/Linux下编写一个运行系统命令的C程序.该命令将一些文本输出到stdout,我正在尝试将输出捕获到字符串或字符数组中.

例如:

system("ls");
Run Code Online (Sandbox Code Playgroud)

会将当前目录的内容列为stdout,我希望能够以C编程方式将该数据捕获到C中.

我该怎么做呢?

谢谢.

c stdout

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

在重定向的stdout管道上禁用缓冲(Win32 API,C++)

我正在使用Win32生成一个进程CreateProcess,设置hStdOutput和创建的管道句柄的hStdError属性.我有两个线程读取管道,等待数据可用(或完成的过程,此时它检查在终止线程之前没有剩余数据). 随着数据变得可用,我将输出写入有效的大文本框.STARTUPINFOCreatePipe

正在发生的事情是输出被缓冲,因此缓慢运行的进程只会在文本框中抛出大量数据,但不会"发生".

我不确定它是否正在进行缓冲管道,或者与重定向有关.

有没有办法将管道设置为无缓冲,或者以尽快发送stdout的方式启动进程?

我正在使用一个测试应用程序进行测试

Here is line one
(waits one second)
Here is line two
(waits one second)
... etc
Run Code Online (Sandbox Code Playgroud)

windows winapi redirect stdout

14
推荐指数
1
解决办法
8042
查看次数

将子进程的输出(stdout,stderr)重定向到Visual Studio中的"输出"窗口

目前我正从我的C#程序启动批处理文件:

System.Diagnostics.Process.Start(@"DoSomeStuff.bat");
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是将该子进程的输出(stdout和stderr)重定向到Visual Studio中的Output窗口(特别是Visual C#Express 2008).

有没有办法做到这一点?

(另外:这样就不会全部缓冲,然后在子进程完成时吐出到Output窗口.)


(顺便说一句:目前我可以通过使我的程序成为"Windows应用程序"而不是"控制台应用程序"来使进程的stdout(但不是stderr)出现在"输出"窗口中.如果程序运行,这会中断在Visual Studio之外,但在我的特定情况下这是好的.)

c# stdout visual-studio-2008 visual-studio output-window

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

从cygwin shell启动时写入stdout的位置是什么,没有重定向

我有一个应用程序,我们称之为myapp.exe,这是双模式控制台/ GUI,内置为/ SUBSYSTEM:WINDOWS(有一个小的3KB垫片myapp.com使cmd.exe等待显示新提示.)

如果我从命令提示符启动:

  • myapp - > cmd.exe运行运行myapp.exe的myapp.com.stdout最初是一个独立的控制台,通过使用AttachConsole,freopen("CONOUT$", "w", stdout)我的输出显示在命令框中.好
  • myapp.exe - > cmd.exe显示提示太早(已知问题),否则与之前相同.不是正常的使用场景.
  • myapp > log- > stdout是一个文件,正常使用std::cout最终在文件中.好

如果我从Windows资源管理器启动:

  • myapp.com - >创建控制台,stdout是控制台,输出进入控制台.使用/ SUBSYSTEM:CONSOLE用于整个程序的结果相同,只是我myapp.com在控制台中唯一的进程时添加了一个暂停.不是正常的使用场景.
  • myapp.exe- > stdout是一个NULL句柄,我检测到这个并挂钩std::cout到GUI.好

如果我从Matlab shell启动:

  • system('myapp')或者system('myapp.com')system('myapp.exe')- >对于所有三种变型中,标准输出通过管道输送到MatLab的.好

如果我从cygwin bash shell启动:

  • ./myapp.com - >就像从cmd.exe启动一样,输出显示在命令框中.好
  • ./myapp- >(bash发现./myapp.exe). 这是破案.stdout是一个非NULL句柄,但输出无处可去.这是从bash运行程序的正常情况,需要修复!
  • ./myapp > log - >就像从带有文件重定向的cmd.exe启动一样.好
  • ./myapp | cat - >与文件重定向类似,但输出最终在控制台窗口中.好

有没有人知道cygwin在启动/ SUBSYSTEM:WINDOWS进程时设置为stdout以及如何绑定std::cout它?或者至少告诉我如何找出我从哪个手柄回来GetStdHandle(STD_OUTPUT_HANDLE)

我的程序是用Visual C++ 2010编写的 …

cygwin stdout

14
推荐指数
1
解决办法
4388
查看次数

PHP CLI不使用stderr输出错误

我正在通过MacOS中的NSTask运行PHP CLI,但这个问题更多的是关于CLI本身.

我正在听stderr管道,但无论我尝试运行什么文件,都没有输出:

  • 如果文件类型不是纯文本,请stdout设置为?.
  • 如果该文件是一个错误的PHP脚本,仍然会打印错误消息stdout.

是否有转换到解释器来处理错误stderr?我是否可以选择检测解析以外的错误stdout

php stdout stderr nstask

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

为什么'java -version'会转到stderr?

是否有结果什么特别的理由java -versionstderr

例如,此命令从Windows的提示行执行:

java -version > java_version.txt
Run Code Online (Sandbox Code Playgroud)

将文件java_version.txt留空.

编辑:执行后java.exe没有任何参数打印出的帮助也是如此.

编辑:出于纯粹的好奇心,我检查了它是否总是那样,事实证明它确实存在.java -version转到stderrJDK 1.1.8和JDK 1.2.2,但是java.exe没有任何参数的输出没有.

java stdout stderr

14
推荐指数
1
解决办法
2874
查看次数

在Python中设置只读属性?

考虑到Python的动态性,如果不可能的话,我会感到震惊:

我想改变执行情况sys.stdout.write.

我从这个答案得到了我的另一个问题的想法:https://stackoverflow.com/a/24492990/901641

我试着写这个:

original_stdoutWrite = sys.stdout.write

def new_stdoutWrite(*a, **kw):
    original_stdoutWrite("The new one was called! ")
    original_stdoutWrite(*a, **kw)

sys.stdout.write = new_stdoutWrite
Run Code Online (Sandbox Code Playgroud)

但它告诉我AttributeError: 'file' object attribute 'write' is read-only.

这是一个很好的尝试,让我不要做一些潜在的(可能)愚蠢的事情,但我真的很想继续这样做.我怀疑解释器有一些我可以修改的查找表,但我在Google上找不到类似的东西.__setattr__也没用 - 它返回了关于属性为只读的完全相同的错误.

我特意寻找Python 2.7解决方案,如果这很重要,虽然没有理由拒绝投入适用于其他版本的答案,因为我怀疑未来的其他人会在这里看到与其他版本类似的问题.

python stdout readonly-attribute python-2.7

14
推荐指数
1
解决办法
9053
查看次数