Articles of 标准输出

捕获和显示exec / shell_exec周期性输出?

你可以很容易地使用exec()或者shell_exec()来执行系统命令,比如ls -l /var/www/mysite ,然后输出命令的结果。 如何执行并显示定期将信息输出到控制台的命令的结果? 例子:你有一个简单的Python脚本。 如果您从控制台运行脚本,则会每10秒钟一次将控制台的某些信息打印出来,直到您强制退出脚本。 如何可以使用PHP来执行这个python命令,并以某种方式实时捕获和stream输出到浏览器? 是这样的可能吗? 我想这里面会涉及某种Ajax,但我不确定。 我试着做这样的事情: python myscript.py > output.txt 然后,我打算使用Ajax来周期性地tail或输出output.txt的内容并在浏览器中显示。 但是,在脚本强制退出之前, output.txt似乎没有添加任何内容。

意外的input62; 9; c62; 9; c62; 9; c62; 9; c在将缓冲区写入标准输出

我们的目标是读取文件并将缓冲区直接写入标准输出,以便进一步处理。 这如预期的文本文件,图像和PDF。 但是在阅读PDF文件时,在shellinput中会显示一个奇怪的input:62; 9; c62; 9; c62; 9; c62; 9; c。 我在Ubuntu 14.04.3 LTS(14.04)上编译test.c。 贝壳 user@user-virtualmachine:~$./test <prints binary data here … … end of binary data> user@user-virtualmachine:~$62;9;c62;9;c62;9;c62;9;c 当我检查md5sum这是一个比赛,所以没有什么奇怪的: md5sum paper.pdf 5152a6c5b7deb364385fb3dd27c586db paper.pdf ./test | md5sum 5152a6c5b7deb364385fb3dd27c586db – 我试图在网上查找它,它说,一些二进制数据可能会导致shell写入到标准输出时以意想不到的方式行事。 这个问题能解决吗? 代码如下所示。 TEST.C #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main() […]

避免在linux中写入进度条文件

我有一个打印输出的过程,但这个输出还包括加载栏。 我想都写这个输出到一个文件并显示这个输出。 通常我可以这样做: ./my_process.sh | tee -a my_log_file.txt 要么 ./my_process.sh >> my_log_file.txt tail -f my_log_file.txt 这将所有东西打印到我的terminal,但是它也会将所有东西打印到日志文件中,包括进度条的每一步! 我想排除进度条迭代从打印到日志文件。 对于我的目的,任何带回车符的行都可以从日志文件中排除。 我怎么能排除回车线被追加到日志文件,而仍然打印到terminal标准输出?

如果STDOUT缓冲区溢出,会发生什么情况

我想知道如果stdout缓冲区溢出会发生什么? 例如: app 1启动app 2 ,将N行写入其stdin , 然后读取其stdout 。 第二个应用程序只是重写所有从stdin到stdout 。 目前, app 1完成了N行到app 2写入,并切换到读取其stdout , app 2已经完成将行stdout到stdout 。 而这个数据在它的stdout的缓冲区中。 随着N增加,我们可以溢出缓冲区。 那会发生什么? app 2崩溃或其进程块? 如果这是一个崩溃将是错误代码(Linux)? 编辑:一些代码http://pastebin.com/msMRdxGR 我得到SIGPIPE错误。 (并使用错误的标签 – app1是app2,反之亦然)。 对不起,从开始不问,但有没有办法避免这个错误? 如果app2使用2个线程 – 一个用于读取,另一个用于写入。 并在堆内部dynamic分配缓冲区来交换它们之间的数据。 然后,如果没有人读取我的stdout,我可以暂停从读线程写线程。 但是,我怎么能检测到标准输出buf将很快溢出?

将所有命令stdout / stderr从脚本中redirect到日志文件

我已经阅读了如何单独logging某些脚本或命令,但没有logging如何loggingBASH shell中的所有命令。 我想要做的是: 用户运行脚本。 (脚本从现在开始loggingstdout / stderr到日志文件) 用户做其他的东西/运行其他命令/回声/等,所有这些都logging在日志文件。 less罗嗦/更有代表性的例子: 当用户input时, exec(> tee logfile.log)正是我想要做的。 它将stdoutlogging到logfile.log,并将继续这样做直到bash shell被closures。 但是,将这个命令作为脚本运行并不是这样做的。 我想要它。

将std错误redirect到文件时,2>&1的顺序

我看到一些不同的格式将std输出redirect到一个文件: a. command 1&2>output.txt b. command >output.txt 2>&1 c. command 2>&1>output.txt d. command &>output.txt 这些有什么区别? 如果2>&1放在结尾(b),它如何redirect第一个命令的stderr?

将stdout C文件streamredirect到缓冲区

有没有办法将stdout文件stream(C标准输出)redirect到Windows中的缓冲区? 唯一对我有用的是: FILE *fp = freopen("output.txt", "w", stdout); printf("Hello\n"); fclose(fp); 但我总是必须重新读取文件才能获取缓冲区内容。 任何方式直接redirect到内存缓冲区?

将打印多less个XD?

当我和朋友一起玩fork()时遇到了这个奇怪的问题。 非常简单的POC代码喜欢: int main(int argc, char** argv) { int i = 0; for(i=0; i<4; i++) { printf("xd\n"); fork(); } return 0; } 我得到了一个漂亮的输出: xd xd xd xd xd xd xd xd xd xd xd xd xd xd xd xd已经打印了15次,这就是我所期望的 – 4级完整二叉树中的节点数。 但是,当我们删除printf中的“\ n”时,我们又得到了另一个完全不同的结果: xdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxdxd 它给了我64个XD(我的朋友在他的机器上有56个XD)。 这似乎是一个有点“稳定”的结果,因为我可以运行多次,它给了我相同的结果(和我的朋友一样)。 我试图把printf(“xd”)改成perror(“xd”),它给了我15个输出: xd: Success xd: Success xd: Success xd: Success […]

Python脚本在打印之前打印os.system的输出

我有一个python脚本test.py: print "first" import os os.system("echo second") 在Linux命令行我执行 python test.py 它返回: first second 然后我执行 python test.py > test.out; cat test.out 哪个返回 second first 如何redirect输出使得os.system调用在打印语句之前打印?

是否有可能输出到监视stream而不是标准input,标准输出和标准错误? (python)

这是一个python问题,也是一个linux / BSD的问题。 我有一个python脚本与两个线程,一个从网上下载数据,另一个通过串口发送数据到设备。 这两个线程使用python的logging模块将很多状态信息输出到stdout。 我想要的是两个terminal窗口并排打开,并使每个terminal窗口显示来自一个线程的输出,而不是将这两个消息从一个窗口中交错。 除stdin,stdout和stderr之外是否有文件描述符可以写入并连接到其他terminal窗口? 也许这个愿望更好地实现与GUI? 我不知道如何开始这个。 编辑:我试图写状态消息到两个不同的文件,而不是打印到标准输出,然后在其他terminal窗口中tail -f监视这两个文件,但这不适用于实时监控,因为文件不是直到你打电话给close() 。