Лучше сделать так, чтобы гарантированно занять дескриптор 1 (особенно если заменить надо еще дескрипторы 0 и 2):
int fd;
/* Открываем символьное устройство COM-порта. */
fd = open("/dev/ttyS0", O_RDWR);
/* Здесь должна быть настройка порта. */
/* Закрываем потоки stdin, stdout, stderr и привязанные к ним файлы. */
fclose(stdout);
fclose(stdin);
fclose(stderr);
/* Дублируем дескриптор fd на место 0, 1 и 2. */
dup(fd, 0);
dup(fd, 1);
dup(fd, 2);
/* Закрываем его за ненадобностью. */
close(fd);
/* Создаем потоки. */
stdin = fdopen(0, "r");
stdout = fdopen(1, "w");
stderr = fdopen(2, "w");