Распараллеливание:
- Код: Выделить всё
if (fork()==0) {
...склепать межпроцессный канал
execl("/bin/cal", "cal", "0")
} else {
...опять-таки, обработать межпроцессный канал и почитать из него
}
Чтение (более изящно):
- Код: Выделить всё
system("cal|cat>tmp");
...читаем из файла tmp...
system ("rm tmp");
А что хочется - создать pipe, после чего один из его концов подставить в системный вызов (аналогично второму случаю, но вместо tmp будет тот самый дескриптор). Вопрос: а будет ли вообще такое работать? Логика подсказывает, что да, но проверить нет возможности.
На чистом шелле или других скриптовых языках пока писать нельзя. Вернее можно, но тогда задание "написать на С" останется.