Страница 1 из 1

Shell и дескрипторы потоков.

СообщениеДобавлено: 25 мар 2004 22:28
Aragaer
Требуется написать нечто на сях под юникс. Рекомендуется использовать системные вызовы типа cal или например date. Проблема в том, что либо придется возиться с распараллеливанием, либо с чтением из файла. А именно:

Распараллеливание:
Код: Выделить всё
if (fork()==0) {
    ...склепать межпроцессный канал
    execl("/bin/cal", "cal", "0")
} else {
    ...опять-таки, обработать межпроцессный канал и почитать из него
}


Чтение (более изящно):
Код: Выделить всё
system("cal|cat>tmp");
...читаем из файла tmp...
system ("rm tmp");


А что хочется - создать pipe, после чего один из его концов подставить в системный вызов (аналогично второму случаю, но вместо tmp будет тот самый дескриптор). Вопрос: а будет ли вообще такое работать? Логика подсказывает, что да, но проверить нет возможности.

На чистом шелле или других скриптовых языках пока писать нельзя. Вернее можно, но тогда задание "написать на С" останется.

СообщениеДобавлено: 21 апр 2004 18:02
SLAY`ee`K
Ты хочешь организовать многопоточность или многозадачность?

СообщениеДобавлено: 21 апр 2004 22:34
Aragaer
хочу получить каким-либо образом ответ из system.