草庐IT

supervisor-stdout

全部标签

c - FILE * "/dev/stdout"和 stdout 之间的区别

让我们看看这个HelloWorld程序#includeintmain(intargc,char**argv){printf("Hello,World!");constchar*sFile="/dev/stdout";//or/proc/self/fd/0constchar*sMode="w";FILE*output=fopen(sFile,sMode);//fflush(stdout)/*forces`correct`order*/putc('!',output);//Useoutputorstdoutfromstdio.hreturn0;}当使用output文件描述符编译时,输出为:

linux - 需要一种临时重定向 STDOUT 的方法

我知道如何在Linux中重定向输出。问题是,我的bash脚本中有很多输出,我不想输入类似echo$foo>>bar一遍又一遍。我宁愿做这样的事情:hey,bash,forthetimebeingputallyourSTDOUTin"bar"echo$foo..OK,bash,youcangobacktoregularSTDOUTnow我尝试将FD1作为文件打开:exec1>bar但是当我完成后无法让STDOUT恢复正常。关闭文件exec1>&-给我无法解决的错误。有什么办法吗?谢谢! 最佳答案 你必须先保存stdout(例如将它链接

linux - 使用 find -exec 重定向 stdout 并且不创建新的 shell

我有一个脚本只将数据写入stdout。我需要为多个文件运行它并为每个输入文件生成不同的输出文件,我想知道如何为此使用find-exec。所以我基本上尝试了几个变体(为了可测试性,我用cat替换了脚本):find*-typef-execcat"{}">"{}.stdout"\;但无法使其工作,因为所有数据都被写入了一个名为{}.stdout的文件。最终,我可以让它工作:find*-typef-execsh-c"cat{}>{}.stdout"\;但是虽然这个最新的形式与cat配合得很好,但我的脚本需要通过几个初始化脚本加载环境变量,因此我最终得到:find*-typef-execsh-c

c - 为什么 stdout 在重定向到文件时需要显式刷新?

printf()的行为似乎取决于stdout的位置。如果stdout被发送到控制台,则printf()是行缓冲的,并在打印换行符后刷新。如果stdout被重定向到一个文件,除非调用fflush(),否则不会刷新缓冲区。此外,如果在将stdout重定向到文件之前使用了printf(),则后续写入(到文件)将进行行缓冲并在换行后刷新。什么时候stdout行缓冲,什么时候需要调用fflush()?每个的最小示例:voidRedirectStdout2File(constchar*log_path){intfd=open(log_path,O_RDWR|O_APPEND|O_CREAT,S_I

stdout - PHP CLI 不使用 stderr 来输出错误

我在MacOS中通过NSTask运行PHPCLI,但这个问题更多的是关于CLI本身。我正在监听stderr管道,但无论我尝试运行什么文件都没有输出:如果文件类型不是纯文本,stdout设置为?。如果文件是有错误的php脚本,错误消息仍会打印到stdout。有没有切换到解释器通过stderr来处理错误?除了解析stdout之外,我是否可以选择检测错误? 最佳答案 display_errorsdirective(可以在任何地方设置)可选地使用参数“stderr”,以便它向stderr而不是stdout报告错误或完全禁用错误输出。引用自P

php - Laravel Queue with Supervisor,运行但不处理作业

我已经使用数据库设置了Laravel队列,并且配置了Supervisor使其保持运行,但是它会在一段时间后停止处理队列。我正在使用Mail::queue发送电子邮件。如果我通过SSH进入服务器并运行php/home/my/path/to/artisan--env=production--timeout=240queue:listen--tries=5然后它工作正常并且电子邮件发送。但显然我不想通过SSH来处理电子邮件,我希望队列全天候24/7运行,所以我安装了supervisor来管理它。我编辑了我的supervisord.conf文件以包含以下程序:[program:laravel_

php - 通知 : Use of undefined constant STDOUT - assumed 'STDOUT'

我正在尝试在Xampp中设置AmazonAwsPhpSDK。安装SDK后,我尝试使用以下代码从AmazonS3下载存储桶。'__my__key__','secret'=>'__secret__key__'));$destination='downloaded_bucket';$source_bucket='__my__bucket__name';$key_prefix='';$options=array('debug'=>true);$client->downloadBucket($destination,$source_bucket,$key_prefix,$options);?>现

php - echo 是否等于 fputs(STDout)?

echo等于fputs(STDOUT),还是echo写入不同的流?我已经使用PHP一段时间了,但我不太清楚在较低级别上实际发生了什么。 最佳答案 根据PHP'smanualpageonwrappers,答案是否定的。php://outputphp://outputisawrite-onlystreamthatallowsyoutowritetotheoutputbuffermechanisminthesamewayasprint()andecho().print和echo写入php://output流,而fputs(STDOUT)写

php - 如何将 STDOUT 重定向到 PHP 中的文件?

下面的代码几乎可以工作,但这不是我真正的意思:ob_start();echo'xxx';$contents=ob_get_contents();ob_end_clean();file_put_contents($file,$contents);还有更自然的方法吗? 最佳答案 可以将STDOUT直接写入PHP中的文件,这比使用输出缓冲更容易和直接。在脚本的最开始执行此操作:fclose(STDIN);fclose(STDOUT);fclose(STDERR);$STDIN=fopen('/dev/null','r');$STDOUT=

c++ - 即使 stdout 和 stderr 被重定向,Unix 程序如何在屏幕上显示输出?

我在我的Ubuntu机器上运行一个程序(实际上是valgrind),并将stdout和stderr重定向到不同的文件。我惊讶地看到屏幕上出现一条短消息——这怎么可能?我怎么能自己在C++程序中做到这一点?编辑:这是我使用的命令和输出:$valgrind./myprogram>val.out2>val.err***stacksmashingdetected***:./myprogramterminatedEDIT2:多玩一点,结果是myprogram而不是valgrind导致了消息被打印,如下面的回答,看起来gcc堆栈粉碎检测代码正在打印到/dev/tty 最