Читаем Разработка приложений в среде Linux. Второе издание полностью

208:  sts.c_lflag &= ~(ECHO | ECHOCTL | ECHONL);

209:

210:  /* обработка опций сейчас будет модифицировать pts и sts */

211:  switch (flow) {

212:  case 'h' :

213:   /* аппаратное управление потоком */

214:   pts.c_cflag |= CRTSCTS;

215:   pts.c_iflag &= ~(IXON | IXOFF | IXANY);

216:   break;

217:  case 's':

218:   /* программное управление потоком */

219:   pts.c_cflag &= ~CRTSCTS;

220:   pts.c_iflag |= IXON | IXOFF | IXANY;

221:   break;

222:  case 'n':

223:   /* отключение управления потоком */

224:   pts.c_cflag &= ~CRTSCTS;

225:   pts.c_iflag &= ~(IXON | IXOFF | IXANY);

226:   break;

227:  }

228:  if (crnl) {

229:   /* послать CR с NL */

230:   pts.c_oflag |= ONLCR;

231:  }

232:

233:  /* скорость не изменяется, пока не будет указано -b */

234:  if (speed) {

235:   cfsetospeed(&pts, symbolic_speed(speed));

236:   cfsetispeed(&pts, symbolic_speed(speed));

237:  }

238:

239:  /* установить обработчик сигналов для восстановления

240:   * старого обработчика termios */

241:  sact.sa_handler = cleanup_termios;

242:  sigaction(SIGHUP, &sact, NULL);

243:  sigaction(SIGINT, &sact, NULL);

244:  sigaction(SIGPIPE, &sact, NULL);

245:  sigaction(SIGTERM, &sact, NULL);

246:

247:  /* установить измененные настройки termios */

248:  tcsetattr(pf, TCSANOW, &pts);

249:  tcsetattr(STDIN_FILENO, TCSANOW, &sts);

250:

251:  ufds[0].fd = STDIN_FILENO;

252:  ufds[0].events = POLLIN;

253:  ufds[1].fd = pf;

254:  ufds[1].events = POLLIN;

255:

256:  do {

257:   int r;

258:

259:   r = poll(ufds, 2, -1);

260:   if ((r < 0) && (errno != EINTR))

261:    die(1, "неожиданный сбой poll", "");

262:

263:   /* сначала проверить возможность завершения */

264:   if ((ufds[0].revents | ufds[1].revents) &

265:    (POLLERR | POLLHUP | POLLNVAL)) {

266:    done = 1;

267:    break;

268:   }

269:

270:   if (ufds[1].revents & POLLIN) {

271:    /* pf содержит символы */

272:    i = read (pf, buf, BUFSIZE);

273:    if (i >= 1) {

274:     write(STDOUT_FILENO, buf, i);

275:    } else {

276:     done = 1;

277:    }

278:   }

279:   if (ufds[0].revents & POLLIN) {

280:    /* стандартный ввод содержит символы */

281:    i = read(STDIN_FILENO, buf, BUFSIZE);

282:    if (i >= 1) {

283:     if (raw) {

284:      write(pf, buf, i);

285:     } else {

286:      cook_buf(pf, buf, i);

287:     }

288:    } else {

289:     done = 1;

290:    }

291:   }

292:  } while (!done);

293:

294:  /* восстановить первоначальные настройки терминала и завершиться*/

295:  tcsetattr(pf, TCSANOW, &pots);

296:  tcsetattr(STDIN_FILENO, TCSANOW, &sots);

297:  exit(0);

298: }

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных