Просто Window Maker
subj.
subj.
1. Volg@Linux - международная конференция посвящённая проблемам внедрения открытого программного обеспечения в жизнь общества.
2. Volg@Linux проходит в Самарской области. В этом году на турбазе "Полиграфист" расположенной в пос. Волжский, на берегу Волги.
3. Оргвзносы состявляют 350 рублей с человека. В них входит прожвание на турбазе в течении 2-х суток и 3-х разовое питание.
4. На территории РФ проходит всего навсего одно крупномаштабное мероприятие - LinuxFest.
На данный момент, в связи с развитием Linux сообщества, необходимо конференция посвящённая именно распространению открытого программного обеспечения.
Во-первых Volg@Linux - это конференция, направленная на пользователей, а точнее на развитие сообществ пользователей так называемых Linux User Group (LUG). Во-вторых Volg@Linux - способ обменяться опытом по "популяризации" открытого программного обеспечения.
5. Volg@Linux проходит в последние выходные августа. В этом году конференция будет проходить с 29-го по 31-е августа.
Блин, весь инет облазил и не смог ничего найти :-( Может у кого завалялось ?
Не сделать ли нам Linux.Org.Ru-FAQ по материалам форума. А то народ совсем ленивый пошел, ленится посмотреть в соседнее сообщение и найти ответ на свой вопрос. О том чтобы пролистать несколько страниц назад или воспользоваться поисковиком вообще и речи не идет. Можно собрать самые задаваемые вопросы (pppd, wine, xkbd и прочее), поместить их на отдельную страницу и написать большими буквами: ПОИШИ СНАЧАЛА ЗДЕСЬ ОТВЕТ НА СВОЙ ВОПРОС. Как идея? Только надо выбрать координатора проекта (чур не меня), чтобы не запускать дело на самотек.
Драйвер валяется в linux.2.4.x/drivers/net/e1000/. У меня мозгов не хватает понять что делают вызовы ioctl для этого драйвера.
Есть такая проблема, некое устройство обменивается с компом данными по RS232. Есть только три вида посылок, размерами 9, 3 и 34 байта. Необходимо определить какая пришла посылка и заполнить соответствующую структуру. Система Linux Slackware 9.0. Порт я открываю так:
int serial;
struct termios oldtio, newtio;
if ((serial = open(argv[1], O_RDWR | O_NOCTTY)) < 0)
error(1, errno, "Ошибка вызова open\n");
if ((result = tcgetattr(serial, &oldtio)) < 0)
error(1, errno, "Ошибка вызова tcgetattr\n");
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 5;
tcflush(serial, TCIFLUSH);
if ((result = tcsetattr(serial, TCSANOW, &newtio)) < 0)
error(1, errno, "Ошибка вызова tcsetattr\n");
p.s.: Система как-нибудь сообщает о приходе данных на порт ?
Написал tcp-сервак. Для каждого подключения я делаю fork и оно варится самостоятельно. После завершения сеанса - close(socket) и exit(0). Все хорошо, все работает, только после каждого коннекта к серваку, дочерние процессы переходят в состояние Z (зомби), а после окончания работы родителя - они пропадают. Кто-нибудь может обьяснить почему так происходит и как этого избежать. Система - Slackware 9.0.
Исходники:
"tcp_serv.c" :
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdarg.h>
#include<string.h>
#include<errno.h>
#include<netdb.h>
#include<fcntl.h>
#include<sys/time.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include "lib/skel.h"
main(int argc, char* argv[])
{
struct sockaddr_in peer;
int peerlen = sizeof(peer);
SOCKET s;
SOCKET ns;
int pid;
s = tcp_server(NULL, argv[1]);
while(1) {
ns = accept(s, (struct sockaddr *)&peer, &peerlen);
if (!isvalidsock(ns))
error(1, errno, "Ошибка вызова accept\n");
if ((pid=fork()) == -1)
error(1, errno, "Ошибка вызова fork\n");
if (pid==0) {
/* Дочерняя часть */
if (close(s))
error(1, errno, "Ошибка вызова close\n");
send(ns, "Hello world!\n", 13, 0);
if (close(ns))
error(1, errno, "Ошибка вызова close\n");
exit(0);
}
/* Родительская часть */
if (close(ns))
error(1, errno, "Ошибка вызова close\n");
}
exit(0);
}
"skel.h" :
#in#ifndef __SKEL_H__
#define __SKEL_H__ 1
#define FALSE 0
#define TRUE 1
#define NLISTEN 5
typedef int SOCKET;
#define set_errno(e) errno = (e)
#define isvalidsock(s) ( (s) >= 0 )
void error(int status, int err, char* format, ...);
static void set_address(char* hname, char* sname, struct sockaddr_in *sap, char* protocol);
SOCKET tcp_server(char* hname, char *sname);
void error(int status, int err, char* format, ...)
{
va_list ap;
va_start(ap, format);
vfprintf(stderr, format, ap);
va_end(ap);
if (err)
fprintf(stderr, "%s (%d)\n", strerror(err), err);
if (status)
exit(status);
}
static void set_address(char* hname, char* sname, struct sockaddr_in *sap, char* protocol)
{
struct servent* sp;
struct hostent* hp;
char* endptr;
short port;
bzero(sap, sizeof(*sap));
sap -> sin_family = AF_INET;
if (hname != NULL) {
if (!inet_aton(hname, &sap -> sin_addr)) {
hp = gethostbyname(hname);
if (hp == NULL)
error(1,0,"Неизвестный хост: %s\n", hname);
sap -> sin_addr = *(struct in_addr *)hp -> h_addr;
}
}
else
sap -> sin_addr.s_addr = htonl(INADDR_ANY);
port = strtol(sname, &endptr, 0);
if (*endptr == '\0')
sap -> sin_port = htons(port);
else {
sp = getservbyname(sname, protocol);
if (sp == NULL)
error(1,0,"Неизвестный сервис %s\n", sname);
sap -> sin_port = sp -> s_port;
}
}
SOCKET tcp_server(char* hname, char *sname)
{
struct sockaddr_in local;
SOCKET s;
const int on = 1;
set_address(hname, sname, &local, "tcp");
s = socket (AF_INET, SOCK_STREAM, 0);
if (!isvalidsock(s))
error(1, errno, "Ошибка вызова socket ");
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)))
error(1, errno, "Ошибка вызова setsockopt ");
if (bind(s, (struct sockaddr *)&local, sizeof(local)))
error(1, errno, "Ошибка вызова bind ");
if (listen(s, NLISTEN))
error(1, errno, "Ошибка вызова listen ");
return(s);
}
#endif /* __SKEL_H__ */
1) Есть программа, которая создаёт на монтируемом разделе каталог, в нём некий файл, пишет в него всякую чушь и изменяет свою рабочий каталог на созданный.
2) Есть пользователь, который с помощью команды "umount -F /mnt2" размонтирует этор раздел.
3) Как я понял, в результате этого действия программе, а точнее процессу, отправляется сигнал SIGSEGV.
Вопрос: почему при размонтировании не срабатывает установленный обработчик сигнала (он отзывается только на "kill -SIGSEGV [pid]"), и что происходит с открытыми файлами(через функцию open).
Вот что я делаю:
static void sig_hndlr(int signo)
{
...
}
main()
{
struct sigaction act;
act.sa_handler=sig_hndlr;
sigfillset(&act.sa_mask);
act.sa_flags=0;
if (sigaction(SIGSEGV, &act, NULL) < 0)
exit(0);
...
}
Хочу поставить сабж, но линух не может работать с таким винтом. Пробовал указывать параметр lba32 - начинает ругаться на неизвестный параметр. Кто-нибудь знает как его победить ?
Есть задача: надо написать демона, который отслеживает перемещения юзера по каталам (только в консоле) и пишет пути в лог. Признаюсь честно, опыта программирования под линукс у меня почти что нет. Сам демон не проблема, проблема в определении каталога в котором находится юзер. Из досовского прошлого всплыла идея о перехвате системного вызова. Это как вообще реально сделать или нет (если реально, то как). Если нет, то буду благодарен за любые идеи.
Никак не могу заставить работать горячие клавиши (типа Alt-TAB - переключение между приложениями), хотя прописано все вроде верно. Может кто знает в чем дело?
Никак не могу настроить модем(ZyXEL Omni 56K Plus) для работы в инете(Netscape: "Can not connect remote host"). На компе также стоит сетевуха(3 COM EtherLink XL 10/100 PCI for Complete PC Managment NIC 3C905C-TX). Вот конфиги:
/etc/resolv.conf #МТУ nameserver 195.34.32.11 nameserver 195.34.32.10 search
/etc/ppp/ppp-start #!/bin/bash
if [ -r /var/run/ppp0.pid ]; then kill -INT 'cat /var/run/ppp0.pid' sleep 5 /sbin/route delete default fi /usr/sbin/pppd call mtu-intel
/etc/ppp/ppp-kill #!/bin/bash
if [ -r /var/run/pppO.pid ]; then kill -2 'cat /var/run/pppO.pid' route delete default fi
/etc/ppp/options -detach lock modem crtscts noauth debug persist pap-timeout 10 192.168.0.10:0.0.0.0 noipdefault defaultroute netmask 255.255.255.0 /dev/modem 57600
/etc/ppp/script-mtu TIMEOUT 5 ""ATZ OK ATM1L1 OK ATDP9W8,7213311 ABORT BUSY ABORT "NO ANSWER" ABORT "NO DIALTONE" ABORT ERROR TIMEOUT 90 CONNECT "" TIMEOUT 15 "ogin:" guest "word:" mtu PPP
/etc/ppp/peers/mtu-intel -detach lock crtscts noauth debug persist pap-timeout 10 192.168.0.10:0.0.0.0 noipdefault defaultroute netmask 255.255.255.0 connect '/usr/sbin/chat -v -f /etc/ppp/script-mtu' /dev/modem 57600
А вот логи: /var/log/messages May 28 11:10:50 server pppd[1478]: pppd 2.4.1 started by spiro, uid 500 May 28 11:10:51 server chat[1479]: timeout set to 5 seconds May 28 11:10:51 server chat[1479]: send (AT&F^M) May 28 11:10:51 server chat[1479]: expect (OK) May 28 11:10:51 server chat[1479]: AT&F^M^M May 28 11:10:51 server chat[1479]: OK May 28 11:10:51 server chat[1479]: -- got it May 28 11:10:51 server chat[1479]: send (ATM1L1^M) May 28 11:10:52 server chat[1479]: expect (OK) May 28 11:10:52 server chat[1479]: ^M May 28 11:10:52 server chat[1479]: ATM1L1^M^M May 28 11:10:52 server chat[1479]: OK May 28 11:10:52 server chat[1479]: -- got it May 28 11:10:52 server chat[1479]: send (ATDP9W8,9955555^M) May 28 11:10:52 server chat[1479]: abort on (BUSY) May 28 11:10:52 server chat[1479]: abort on (NO ANSWER) May 28 11:10:52 server chat[1479]: abort on (NO DIALTONE) May 28 11:10:52 server chat[1479]: abort on (ERROR) May 28 11:10:52 server chat[1479]: timeout set to 90 seconds May 28 11:10:52 server chat[1479]: expect (CONNECT) May 28 11:10:52 server chat[1479]: ^M May 28 11:11:50 server chat[1479]: ATDP9W8,9955555^M^M May 28 11:11:50 server chat[1479]: CONNECT May 28 11:11:50 server chat[1479]: -- got it May 28 11:11:50 server chat[1479]: send (^M) May 28 11:11:51 server chat[1479]: timeout set to 15 seconds May 28 11:11:51 server chat[1479]: expect (ogin:) May 28 11:11:51 server chat[1479]: 115200/V.34 21600/V42b^M May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: Welcome to MTU-Online phones:^M May 28 11:11:51 server chat[1479]: 995-5555(K56flex,V.90),995-5556(x2,V.90)^M May 28 11:11:51 server chat[1479]: Login as "guest" with password "mtu" for beginning^M May 28 11:11:51 server chat[1479]: and go to http://dialup.mtu.ru for registration^M May 28 11:11:51 server chat[1479]: Use proxy.mtu.ru with port 3128, DNS 195.34.32.11(10)^M May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: APAS10 line 67 ^M May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: User Access Verification^M May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: login: May 28 11:11:51 server chat[1479]: -- got it May 28 11:11:51 server chat[1479]: send (guest^M) May 28 11:11:51 server chat[1479]: expect (word:) May 28 11:11:51 server chat[1479]: ^M May 28 11:11:51 server chat[1479]: login:guest^M May 28 11:11:51 server chat[1479]: Password: May 28 11:11:51 server chat[1479]: -- got it May 28 11:11:51 server chat[1479]: send (mtu^M) May 28 11:11:51 server chat[1479]: expect (PPP) May 28 11:11:51 server chat[1479]: ^M May 28 11:11:52 server chat[1479]: Entering PPP May 28 11:11:52 server chat[1479]: -- got it May 28 11:11:52 server pppd[1478]: Serial connection established. May 28 11:11:52 server pppd[1478]: Using interface ppp0 May 28 11:11:52 server pppd[1478]: Connect: ppp0 <--> /dev/modem May 28 11:11:54 server pppd[1478]: not replacing existing default route to eth0 [192.168.0.254] May 28 11:11:54 server pppd[1478]: local IP address 192.168.0.10 May 28 11:11:54 server pppd[1478]: remote IP address 212.30.161.10
← назад |