【发布时间】:2013-01-20 19:31:46
【问题描述】:
在 C 中
我想将进程的输出从标准输出重定向到写入“共享内存段”,可以将其视为 char 数组或带有指针的字符串
我知道有 dup2 但它将文件描述符作为参数而不是指向数组的指针。有没有办法将它重定向到一个字符串?
【问题讨论】:
在 C 中
我想将进程的输出从标准输出重定向到写入“共享内存段”,可以将其视为 char 数组或带有指针的字符串
我知道有 dup2 但它将文件描述符作为参数而不是指向数组的指针。有没有办法将它重定向到一个字符串?
【问题讨论】:
这应该适用于 UNIX 系统:
// set buffer size, SIZE
SIZE = 255;
char buffer[SIZE];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buffer);
printf("This will be stored in the buffer");
freopen ("/dev/tty", "a", stdout);
【讨论】:
你可以写入一个管道,然后从它读取到共享内存中(也就是说,如果你不能使用管道代替共享内存中的字符串)。
【讨论】:
为了将标准输出简单地重定向到内存字符串,只需这样做:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PATH_MAX 1000
int main()
{
FILE *fp;
int status;
char path[PATH_MAX];
fp = popen("ls ", "r");
if (fp == NULL) return 0;
while (fgets(path, PATH_MAX, fp) != NULL)
printf("\nTest=> %s", path);
status = pclose(fp);
}
【讨论】: