///////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <setjmp.h>
///////////////////////////////////////////////////////////////////////////////
jmp_buf Buf;
///////////////////////////////////////////////////////////////////////////////
void Interrupt()
{
static int count = 0;
count++;
if(count == 5)
{
printf("\n\nFinish work");
printf("\nUsers got mail:\n");
system("more info.out");
count = 0;
exit(1);
}
printf("\nInterrupt detected");
longjmp(Buf, 1);
}
///////////////////////////////////////////////////////////////////////////////
void append(char str1[], char str2[])
{
int i = 0, j = 0;
while(str1 != '\0')
{
i++;
}
while((str1 = str2[j]) != '\0')
{
i++;
j++;
}
}
///////////////////////////////////////////////////////////////////////////////
int main()
{
int i, l;
FILE *file;
char buf[80], *ptr, str[] = "mail \0";
signal(SIGINT, Interrupt);
sigsetjmp(Buf, 1);
system("users > info.out");
file = fopen("info.out", "r");
ptr = fgets( buf, 80, file);
l = strlen(ptr);
ptr[l] = '\0';
append(str, ptr);
sigsetjmp(Buf, 1);
system(str);
while(1)
{
sigsetjmp(Buf, 1);
printf("\nwaiting...");
sleep(2);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
Отправка писем соседним терминалам(лаба на С)
Все привет! У меня возьник вопрос, как в unix оправлять письма на соседние терминалы. Делаю на С и догадываюсь, что надо будет вызвать внешнюю команды с помощью System или Execl. Нашел в мануале команду mail, но не понял как с помощью нее отправлять. Зарание спасибо
кроме того - в пределах одной системы между терминалами можено общаться командой write
Цитата:
man mail изучался вдумчиво?
кроме того - в пределах одной системы между терминалами можено общаться командой write
кроме того - в пределах одной системы между терминалами можено общаться командой write
Люди уже давно написали терминальную програмку talk. :)
Думаю исходные коды прилагаются.
[/LEFT]
Всем спасибо, уже сделал
Код:
Суть в том что я пишу письмо и отправляю всем пользователям со мной в сети, а на 5 прерывание вывожу имена пользователей куда посылал почту.
Когда я просто пишу письмо а потом вызываю прерывания все нормально происходит, а когда во время написания письма жму ctrl+c то похоже mail вызывает свою ф-цию обработки прерываний, а моя игнорируется.
Примерно так происхобит действие:
Subject: mail
hello world
.
^c interrup detected...
...
...
где ^c - ctrl+с
потом выводим список
или Subject: ^c^c
что-то типа "еще одно прерывание и письмо не создатся"
^c
interrupt detected...
Поэтому такой вопрос - как заблокировать main'овскую ф-цию обработки прерывания что бы моя работалаили наоборот, как сосчитать прерывания которые делала main'овская ф-ция? Зарание спасибо