Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как переписать на C оператор Perl open(FLY,"| $flyprog -o $outfile ");

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
Dmitry.Karpov
Гость





СообщениеДобавлено: Пт Окт 26 2001 19:32    Заголовок сообщения: Как переписать на C оператор Perl open(FLY,"| $flyprog -o $outfile "); Ответить с цитатой

Есть программа на Perl:
#!/usr/bin/perl
$flyprog = "/usr/local/bin/fly";
$outfile = "temp.gif";
open(FLY,"| $flyprog -o $outfile ");
print FLY "new\n";
print FLY "size 256,256\n";
print FLY "fill 1,1,255,255,255\n";
print FLY "circle 128,128,180,0,0,0\n";
print FLY "fill 128,128,255,255,0\n";
print FLY "arc 128,128,120,120,0,180,0,0,0\n";
print FLY "circle 96,96,10,0,0,0\n";
print FLY "circle 160,96,10,0,0,0\n";
print FLY "fill 96,96,0,0,0\n";
print FLY "fill 160,96,0,0,0\n";
close(FLY);
Как переписать на C оператор
open(FLY,"| $flyprog -o $outfile ");
? Я догадываюсь, что надо сделать fork(), проверить, кто я (родитель или ребенок), потом exec(flyprog,"-o",outfile).
А вот как подменить stdin? Какие маны читать?
Вернуться к началу
оПНУНФХИ
Гость





СообщениеДобавлено: Вс Окт 28 2001 12:35    Заголовок сообщения: Re: Как переписать на C оператор Perlopen(FLY,"| $flyprog -o $outfile "); Ответить с цитатой

fopen?
Вернуться к началу
Ertzog
Гость





СообщениеДобавлено: Ср Окт 31 2001 15:42    Заголовок сообщения: Re: Как переписать на C оператор Perlopen(FLY,"| $flyprog -o $outfile "); Ответить с цитатой

You need 4 functions: fork,execl,pipe and dup2
fork returnes 0 to the child and pid to the parent
execl changes current process to what You need
pipe creates the channel: in one descriptor You write, from other You read
dup2 changes the descriptors.
The rest is in the manual
Вернуться к началу
Арлекин
Гость





СообщениеДобавлено: Пн Ноя 05 2001 13:11    Заголовок сообщения: Re: Как переписать на C оператор Perlopen(FLY,"| $flyprog -o $outfile "); Ответить с цитатой

man dup2
Вернуться к началу
Chuk



Зарегистрирован: 16.11.2001
Сообщения: 13
Откуда: Киев

СообщениеДобавлено: Ср Ноя 14 2001 21:00    Заголовок сообщения: Re: Как переписать на C оператор Perl open(FLY,"| $flyprog -o $outfile "); Ответить с цитатой

>>Есть программа на Perl:
>> #!/usr/bin/perl
>> $flyprog = "/usr/local/bin/fly";
>> $outfile = "temp.gif";
>> open(FLY,"| $flyprog -o $outfile ");
>> print FLY "new"
...
>> close(FLY);
>>Как переписать на C оператор
>> open(FLY,"| $flyprog -o $outfile ");
>>? Я догадываюсь, что надо сделать fork(), проверить, кто я (родитель или ребенок), потом exec(flyprog,"-o",outfile).
>>А вот как подменить stdin? Какие маны читать?

Можно трудиться над fork(),pipe(),dup(),...
А можно и проще (зависит от требований задачи)-
FILE *fp=NULL;
char cmd[1024], *outfile="temp.gif";
sprintf(cmd,"/usr/local/bin/fly -o %s",outfile);
fp=popen(cmd,"w");
fprintf(fp,"...")
pclose(fp);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...