加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何保持“永远”运行Free Pascal控制台应用程序?

发布时间:2020-12-13 23:04:25 所属栏目:Linux 来源:网络整理
导读:在 Linux Free Pascal 2.6.0控制台应用程序中,HTTP服务器启动并在单独的线程中运行,因此对Start的调用将立即返回. begin ... MyHTTPServer.Start; ... WriteLn('Application terminated');end; 为了防止控制台关闭,我可以使用简单的无限循环,如: // wait,re
在 Linux Free Pascal 2.6.0控制台应用程序中,HTTP服务器启动并在单独的线程中运行,因此对Start的调用将立即返回.

begin
  ...
  MyHTTPServer.Start;
  ...
  WriteLn('Application terminated');
end;

为了防止控制台关闭,我可以使用简单的无限循环,如:

// wait,read and ignore input from stdin
while True do ReadLn;

要么

// Sleep as long as possible
while True do Sleep(MaxInt);

你更喜欢哪一个?或者有更好的方法来保持应用程序运行?

解决方法

这是一个非常好的问题,我不知道为什么人们会投票.一个来自我.

它不仅仅是永远等待的问题(当checkforsomeevent做睡眠时(10);会在checkforsomeevent检查你想要终止的任何事件的情况下执行,或者如果不这样做则执行TRUE.因为线程无关,所以睡觉(0)似乎是浪费资源)

更大的问题是Windows将终止长时间运行的控制台程序,这些程序在一段时间后初始化线程支持,因为它认为它们“挂起”.

我不完全确定这是(墙)运行时间,或CPU资源.

Free Pascal帮助编译器chmcmd可以运行很长时间(分钟,因为它正在压缩html).它支持* nix上的线程,但我从来没有让它在Windows下正常工作. (诚??然,由于chmcmd主要用于* nix,因此它不是高优先级项目)

我回过头来研究了一下,看来你必须注册一个窗口句并处理消息以避免这种情况.我试过这个但是失败了,找不到补丁atm,它可能在我的工作系统上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读