LINUX.ORG.RU

stdout в С


0

0

Доброго времени суток.
У меня есть:

[root@centos stdoutreopen]# uname -a
Linux centos 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux
[root@centos stdoutreopen]# yum list|grep gcc
gcc.i386 4.1.2-44.el5 installed
gcc-c++.i386 4.1.2-44.el5 installed
libgcc.i386 4.1.2-44.el5 installed


Есть пример с книжки:
[root@centos stdoutreopen]#cat stdoutreopen.c
#include <stdlib.h>
#include <stdio.h>

int main (void)
{
fclose (stdout);
stdout = fopen ("anyfile", "w");
if (stdout == NULL)
abort ();

printf ("Hello World!\n");
return 0;
}

[root@centos stdoutreopen]#gcc -o stdoutreope stdoutreopen.c

Запускаем.После запуска должен был создаться файл anyfile с Hello World!
файл создался а надпись нет.

[root@centos stdoutreopen]# ./stdoutreope
[root@centos stdoutreopen]# cat anyfile
[root@centos stdoutreopen]# ll
total 68
-rw-r--r-- 1 root root 0 Aug 5 00:41 anyfile
-rwxr-xr-x 1 root root 5162 Aug 5 00:36 stdoutreope
-rw-r--r-- 1 root root 231 Aug 5 00:41 stdoutreopen.c

Помогите пожалуста понять в чем проблема.
Заранее большое спасибо!

#include <stdlib.h>
#include <stdio.h>

int main (void)
{
freopen ("anyfile", "w", stdout);
if (stdout == NULL)
abort ();

printf ("Hello World!\n");
return 0;
} 

RTFM!!!

Eddy_Em ☆☆☆☆☆
()

#include <stdlib.h>
#include <stdio.h>

int main (void)
{
close (1);
stdout = fopen ("anyfile", "w");
if (stdout == NULL)
abort ();

printf ("Hello World!\n");
return 0;
}

P.S. (gcc версия 4.1.2 20080704 (Red Hat 4.1.2-44))

Deleted
()
Ответ на: комментарий от Eddy_Em

> freopen ("anyfile", "w", stdout);
> if (stdout == NULL)
Я бы сказал if (freopen(...) == NULL)

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.