Простой демон-сервер с QT

Я пытаюсь использовать Qt для создания серверной / клиентской программы, которая работает с Inetd/xinetd в ОС Linux.

Я добавил файл конфигурации службы в /etc/xinetd.d/testServ с этим текстом

service testServ
{
  socket_type = stream
  protocol = tcp
  wait = no
  user = root
 server = /usr/sbin/testServer
 }

Затем я добавил эту строку в /etc/services

 testServ   5050/tcp    # the service uses the port nr 5050 and tcp protocol

Я создал специальную клиентскую программу, которая подключается к серверу с указанным портом, который работает без проблем.

Проблема в программе сервера. Я написал этот код в основной функции серверной программы

Int main(int argc, char *argv[]) {
  qDebug()<<"starting the daemon version of server client app";
  QApplication app(argc, argv);
  setvbuf(stdout, NULL, _IONBF, 0);
  setvbuf(stdin,  NULL, _IONBF, 0);
  QFile fstdin;
  QFile fstdout;
  fstdout.open(stdout, QFile::WriteOnly|QFile::Unbuffered);
  fstdin.open(stdin, QFile::ReadOnly);
  CleintProcess clientproc (NULL, &slog, argc, argv, &fstdin, &fstdout);
  app.exec();
  return 0;
}

Проблема в программе сервера находится на второй строке основной функции, программа не продолжается после этой строки. Если я что-то печатаю после этой строки, она не появляется на экране, но если я что-то печатаю до этой строки, появляется сообщение для печати. Я не знаю, почему Inetd / Xinetd не работает с QApplication app(argc, argv);

когда я удаляю эту и другую строки (app.exe), программа прекращает работу напрямую.

Мне нужно QApplication, потому что я использую его много раз в объекте clientproc( ....).

Можете ли вы помочь мне решить эту проблему и заставить qt работать с inetd/xinetd в linux.

0 ответов

Другие вопросы по тегам