用c ++中的文件指针替换stdout和stdin?

sas*_*ami 2 c++ posix

我有一个用c编写的沙箱代码.它中包含以下行: msb.sbox.task.ofd = STDOUT_FILENO;.那是可执行文件的输出写入标准输出.我想改变它,所以输出被写入文件而不是.我试过这样做

  FILE * fp;
  fp=fopen("myf","w");
  msb.sbox.task.ofd=fp;
Run Code Online (Sandbox Code Playgroud)

但是这给出了警告.warning: assignment makes integer from pointer without a cast [enabled by default]我怎么去做?

nou*_*ney 5

试试这个:

  FILE * fp;
  fp=fopen("myf","r");
  msb.sbox.task.ofd=fileno(fp);
Run Code Online (Sandbox Code Playgroud)

STDOUT_FILENO是一个int,并且fp是指向FILE结构的指针,因此您的赋值不正确. fileno将从int指向FILE结构的指针返回文件描述符(值),即什么fp.