Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отправка писем соседним терминалам(лаба на С)

19K
21 мая 2007 года
Чубз
13 / / 24.10.2006
Все привет! У меня возьник вопрос, как в unix оправлять письма на соседние терминалы. Делаю на С и догадываюсь, что надо будет вызвать внешнюю команды с помощью System или Execl. Нашел в мануале команду mail, но не понял как с помощью нее отправлять. Зарание спасибо
2
21 мая 2007 года
squirL
5.6K / / 13.08.2003
man mail изучался вдумчиво?
кроме того - в пределах одной системы между терминалами можено общаться командой write
502
23 мая 2007 года
Jail
550 / / 30.01.2007
[LEFT]
Цитата:
man mail изучался вдумчиво?
кроме того - в пределах одной системы между терминалами можено общаться командой write


Люди уже давно написали терминальную програмку talk. :)
Думаю исходные коды прилагаются.
[/LEFT]

19K
31 мая 2007 года
Чубз
13 / / 24.10.2006
Всем спасибо, уже сделал
19K
05 июня 2007 года
Чубз
13 / / 24.10.2006
Это снова я, у меня возникла трабоа с прогой. Вот код:
Код:
///////////////////////////////////////////////////////////////////////////////

#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;
}

///////////////////////////////////////////////////////////////////////////////


Суть в том что я пишу письмо и отправляю всем пользователям со мной в сети, а на 5 прерывание вывожу имена пользователей куда посылал почту.

Когда я просто пишу письмо а потом вызываю прерывания все нормально происходит, а когда во время написания письма жму ctrl+c то похоже mail вызывает свою ф-цию обработки прерываний, а моя игнорируется.

Примерно так происхобит действие:
Subject: mail
hello world
.

^c interrup detected...
...
...
где ^c - ctrl+с
потом выводим список

или Subject: ^c^c
что-то типа "еще одно прерывание и письмо не создатся"
^c
interrupt detected...


Поэтому такой вопрос - как заблокировать main'овскую ф-цию обработки прерывания что бы моя работалаили наоборот, как сосчитать прерывания которые делала main'овская ф-ция? Зарание спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог