我有一个用c编写的沙箱代码,其中包含以下行:msb.sbox.task.ofd = STDOUT_FILENO;
。将可执行文件的输出写入
标准输出。我想更改此设置,以便将输出写到文件中。
这个
FILE * fp;
fp=fopen("myf","w");
msb.sbox.task.ofd=fp;
但这给出了警告
warning: assignment makes integer from pointer without a cast [enabled by default]
。我该怎么办? 最佳答案
试试这个:
FILE * fp;
fp=fopen("myf","r");
msb.sbox.task.ofd=fileno(fp);
STDOUT_FILENO
是int
,而fp
是指向FILE
结构的指针,因此您的分配不正确。fileno
将返回指向int
结构的指针的文件描述符(FILE
值),即fp
。关于c++ - 用c++中的文件指针替换stdout和stdin?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17581507/