我有一个使用 打印到 stdout 的 C 函数fprintf,并且我试图在UIAlertView. 我的代码如下:
NSFileHandle *stdoutFileHandle = [NSFileHandle fileHandleWithStandardOutput];
NSData *stdoutData = [stdoutFileHandle availableData];
NSString *stdoutString = [[NSString alloc] initWithData:stdoutData encoding:NSASCIIStringEncoding];
UIAlertView *stdoutAlert = [[UIAlertView alloc] initWithTitle:@"STDOUT OUTPUT" message:stdoutString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[stdoutAlert show];
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,出现以下错误。
由于未捕获的异常“NSFileHandleOperationException”而终止应用程序,原因:“[NSConcreteFileHandle availableData]:错误的文件描述符”
[stdoutFileHandle availableData]当我替换为时,我收到了等效的错误[stdoutFileHandle readDataToEndOfFile]。
我的代码如下(Windows 平台):
AllocConsole();
FILE *fp = freopen("CONOUT$", "w", stdout); //couldn't find documentation what CONOUT$ actually is
lua_State *lua_state = luaL_newstate();
luaL_openlibs(lua_state);
if(luaL_dostring(lua_state, "print 'It works!'"))
{
printf("%s\n", lua_tostring(lua_state, -1));
}
Run Code Online (Sandbox Code Playgroud)
我无法获得 Lua 输出,而正常的 printf 可以工作(Lua 错误也会被打印)
您可以使用该模块删除单个字符process.stdout,但是如何删除整行而不打印单个空格呢?
从 C# 表单中,我正在运行一个进程,其启动信息类似于将控制台输出重定向到单独程序中的文本框,并且C# 在运行时获取进程输出,该进程运行正确,但输出需要很长时间才能出现在DataReceived 事件中。
我希望在流程生成后立即看到文本;根据流程标准输出无法捕获?(第一条评论)我需要等到 2 到 4 kb 的缓冲区填满后才能触发事件。
根据要求,这是代码:
void pcs_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
textBox1.BeginInvoke((Action)delegate { textBox1.AppendText(text + "\n"); });
}
private void LER_Go_Click(object sender, EventArgs e)
{
// variables LiDARExtRep contains the full path to an executable file
// that runs in DOS and produces verbose output.
// LER_Path.Text is the parameter passed to LiDARExtRep (only one arg for this example)
ProcessStartInfo pStartInfo …Run Code Online (Sandbox Code Playgroud) 是否可以关闭 $stdout 和 $stderr 并且不将其重定向到文件;只需将其关闭,这样它就不会在任何地方打印任何内容?
我已经尝试过以下代码,但它只是错误error: Invalid argument
$stderr = IO.new(0,"w")
$stdout = IO.new(0,"w")
Run Code Online (Sandbox Code Playgroud) xlwings 是否可以在从 VBA 运行脚本时弹出控制台并显示标准输出?
我知道 xlwings 将标准输出写入日志文件,这很有用,但我想在用户等待计算完成时为他们提供一些更新。调试器可以做到这一点,但似乎有点矫枉过正。
我有一个相当简单的脚本(在向每一行添加时间戳后从 tty 打印内容)。它在命令行上输出很好,但重定向输出>不起作用。为什么不?
这是脚本:
#!/bin/bash
awk '{ print strftime("%Y-%m-%d %H:%M:%S |"), $0; }' "$1"
Run Code Online (Sandbox Code Playgroud)
按原样运行它,就像timecat /dev/ttyACM0工作正常一样,我在终端中看到了内容。
但如果我跑timecat /dev/ttyACM0 > ~/tmp.log,什么都没有出来。与tee. 文件在那里,但它是空的。
awk脚本中有什么奇怪的东西,我该如何修改它以使重定向工作?
这是一个示例示例 -
1号航站楼
$ ./file_name1.sh
Run Code Online (Sandbox Code Playgroud)
2号航站楼
$ ./file_name2.sh
Run Code Online (Sandbox Code Playgroud)
更具体地说,我想要的是,从一个程序同时stdout在一个终端和stderr另一个终端上打印。
可以使用终端terminator或任何其他终端来完成吗?
执行以下简化代码时:
use strict; # [01]
use warnings FATAL => 'unopened'; # [02]
# [03]
my ($inHandle, $outHandle) = (\*STDIN, \*STDOUT); # [04]
print $outHandle "STDOUT 1\n"; # [05]
# [06]
# $outHandle re-assigned to outputA.txt ??? # [07]
open($outHandle, ">outputA.txt") or die ("A: $!\n"); # [08]
print $outHandle "FILE A\n"; # [09]
print "STDOUT? 2\n"; # [10]
print STDOUT "STDOUT 3\n"; # [11]
close $outHandle; # [12]
# [13]
# $outHandle is closed # [14]
print STDOUT "STDOUT 4\n"; # …Run Code Online (Sandbox Code Playgroud) 通常我通过子shell捕获输出:
result="$(command 2>&1)"
如果命令是source,则子外壳会吞下对脚本外壳环境的一些(全部?)更改。
如何将 的输出捕获source到变量中?