#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <stdlib.h>
char names[200]="";
sigjmp_buf obl;
void interrupt()
{
printf("%s\n",names);
siglongjmp(obl,1);
}
main()
{
char name[500]="";
char sys[512];
int fd;
int p=0;
struct sigaction sa;
sa.sa_handler=interrupt;
sa.sa_flags=SA_NODEFER;
sigprocmask(0,NULL,&sa.sa_mask);
sigaction(SIGINT, &sa,NULL);
while (p!=1)
{
sigsetjmp(obl,1);
if (fork()==0)
{
strcpy(sys,"stat -f %HT ");
while(open(name, O_RDONLY)==-1)
{
printf("enter file name\n");
scanf("%s",name);
}
strcat(sys,name);
strcpy(names, " ");
strcpy(names, name);
close(1);
fd=open("temp", O_WRONLY | O_TRUNC | O_CREAT, 0666);
system(sys);
close(fd);
exit(0);
}
else
{
sigsetjmp(obl,1);
wait();
sigsetjmp(obl,1);
system("cat temp");
}
sigsetjmp(obl,1);
printf("Enter 1 to exit\n");
scanf("%d",&p);
}
}
При прерывании выводиться пустая строка. Где ошибка?
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.