Tag: stdout

将标准输出重定向到文件?

我想编写一个函数,它将标准输出重定向到文件名为“name”的文件.log其中“name”是函数的参数 void redirect(char *name) { 我不知道从哪里开始。

将孩子的stdout传递给父母stdin

我尝试将子进程中的程序的stdout传递给父进程中的stdin。 在bash中,这将是这样的: wget“adress”|少 我的代码如下所示: int fd[2]; pid_t child_id; int status; char *args[] = {“wget”,”-O -“,argv[1], NULL}; int pipe(int fd[2]); child_id = fork(); if (child_id == -1) { printf (“Fork error\n”); } if (child_id == 0) { close(fd[0]); int c = dup2(fd[1],1); execl (“/usr/bin/wget”, “wget”, “-qO-“,argv[1], NULL); } else{ waitpid(child_id,&status,0); close(fd[1]); int c2 = dup2(fd[0],STDIN_FILENO); printf(“%i\n”,c2 […]

用C中的popen捕获tshark标准输出

我试图通过C中的程序从tshark捕获标准输出。为此,我使用popen()调用打开tshark进程并从返回的FILE流中读取。 代码示例: #include #include int main() { FILE* pipe_fd = popen(“tshark -i eth0 -R icmp -2 -T fields -e icmp.checksum -e icmp.seq”, “r”); //FILE* pipe_fd = popen(“lsof”, “r”); if (!pipe_fd) { fprintf(stderr, “popen failed.\n”); return EXIT_FAILURE; } char buffer[2048]; while (NULL != fgets(buffer, sizeof(buffer), pipe_fd)) { fprintf(stdout, “SO: %s”, buffer); } pclose(pipe_fd); printf(“tdr FINISHED!\n”); return […]

Python,stdout,C和SWIG

假设我在c中有一个函数: 你好ç void hello() { printf(“Hello How are you”); } 现在将其包装到python函数hello.py 。 现在,当我运行python函数hello.py ,我得到输出,但我想将它保存到变量。 我尝试过使用这种方法: import sys import StringIO stdout = sys.stdout result = StringIO.StringIO() sys.stdout = result hello() sys.stdout = stdout result_osr_string = result.getvalue() print result.getvalue() 我认为问题在于swig到python的转换。 因为当我为一个简单的python函数尝试上面的方法时,它的工作原理。 我尝试使用fprintf而不是printf但即使这样也行不通。

从同一个C程序中读取stdout

我如何阅读我的程序的标准输出? 我的一个线程需要访问stdout来读取其他线程正在记录的内容。 我正在使用亲爱的老平原C.

为什么stdout无法替代?

出于教育目的,我试图用标准流替换stdout,stdin和stderr。 我首先查找了流的数据类型,我追溯到带有以下成员的struct _IO_FILE(gdb ptype _IO_FILE): type = struct _IO_FILE { int _flags; char *_IO_read_ptr; char *_IO_read_end; char *_IO_read_base; char *_IO_write_base; char *_IO_write_ptr; char *_IO_write_end; char *_IO_buf_base; char *_IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _flags2; __off_t _old_offset; short unsigned int _cur_column; signed char _vtable_offset; char _shortbuf[1]; […]

设置FILE *是否等于stdout portable?

我有一个函数需要能够写入stdout或文件,具体取决于用户想要的。 它默认为标准输出。 为了实现这一点,我正在做以下事情(减去错误检查等): FILE* out; if (writeToFile) { /*Code to open file*/; } else out = stdout; // …rest of the function goes here if (out != stdout) fclose(out); 这当然可以解决问题,但我不知道它有多便携。 如果不是,和/或它有另一个问题,我应该怎么做呢?

什么是“标准输入”?

我的任务是在C中创建一个读取标准输入内容然后打印它们的测试程序。 但我有点怀疑:什么是标准输入 ? 这是我在键盘上键入的内容吗? 这是我必须阅读的文件吗? 他们都? standard output也是如此:它是控制台吗? 一份文件?

在退出之前是否保证stdout自动刷新? 它是如何工作的?

这是代码(有效的C和C ++) #include int main() { printf(“asfd”); // LINE 1 return 0; } 如果在第1行中我放置segfaulting表达式,程序将崩溃而不打印任何东西(如预期的那样)。 但是为什么上面的代码打印“asdf”并且在没有刷新缓冲区的情况下不会被刷新? 什么是引擎盖下的,为什么它按预期工作?

在C中重定向stdout时的奇怪行为

我正在尝试将stdout重定向到一个文件,然后在C中将其恢复为原始文件,但我面临以下奇怪的问题 – 下面的代码片段成功写入 in stdout in stdout 在stdout和相应in file中的文件中都可以。 #include #include #include #define STDOUT 1 int main(int argc, char* argv[]){ printf(“in stdout \n”); int old_out = dup(STDOUT); close(STDOUT); int fd = open(“./redirected”,O_CREAT|O_RDWR|O_TRUNC,0777); printf(“in file \n”); close(fd); dup(old_out); printf(“in stdout\n”); return EXIT_SUCCESS; } 但是,删除我的主要function的第一行: #include #include #include #define STDOUT 1 int main(int argc, char* argv[]){ int […]