Я бы не стал fork
программой для этого:
p = str;
while (*p) {
*p = toupper(*p);
p++;
}
Если серьезно, вам, вероятно, следует использовать popen
, который автоматически (и надежно) разветвляется и использует канал для настройки FILE *
для вас.
FILE *cmd = popen("tr ... ", "r");
А затем просто fgets
из него (не забудьте pclose
это).К сожалению, в Linux вы не можете одновременно писать и читать во всплывающий файл (вы можете это сделать во FreeBSD).
EDIT
Поскольку это вопрос домашнего задания (и, честно говоря, потому что я нене думаю, что это просто - сделать это полностью правильно в это время ночи), вот что на самом деле делает popen
- Создание канала
- Форк оболочки, которая будет работатькоманда
- Возвращает
FILE *
(возможно, через fdopen
)
Последний шаг действительно необязателен, так как вы всегда можете прочитать непосредственно из файлового дескриптора.