相关疑难解决方法(0)

从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
查看次数

使用-ldflags -H = windowsgui编译golang应用程序时,将输出打印到命令窗口

我有一个通常在后台运行的应用程序,所以我用它编译它

go build -ldflags -H=windowsgui <gofile>
Run Code Online (Sandbox Code Playgroud)

要在命令行检查版本,我想将-V标志传递给命令行,以获取保存要打印到命令提示符的版本的字符串,然后让应用程序退出.我添加了标志包和代码.当我测试它时

go run <gofile> -V
Run Code Online (Sandbox Code Playgroud)

...打印版本很好.当我编译exe时,它只是退出,什么都不打印.我怀疑它是编译标志,导致它无法访问控制台并将我的文本发送到位桶.

我已尝试使用println和fprintf以及os.stderr.write打印到stderr和stdout的变体,但编译的应用程序中没有任何内容.在使用这些标志编译时,我应该如何尝试将字符串打印到命令提示符?

go

13
推荐指数
1
解决办法
3392
查看次数

如何从MFC程序写入stdout?

MFC程序通常无法写入stdout.MFC在启动期间使用stdout/stdin管道做了一些奇怪的事情,你写的任何内容(例如,执行printf("hello");)只是转到/ dev/null.

有谁知道如何从MFC程序成功写入stdout?

谢谢阅读.

c++ mfc stdout

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

如何知道我们是在控制台还是窗口应用中?

上下文:编程ac/c ++ win32-mfc库

如何知道我们是在控制台还是窗口应用中?

c++ windows console winapi

7
推荐指数
1
解决办法
2978
查看次数

标签 统计

c++ ×2

stdout ×2

console ×1

cygwin ×1

go ×1

mfc ×1

winapi ×1

windows ×1