系统相关
首页 > 系统相关> > linux – 如何保持“永远”运行Free Pascal控制台应用程序?

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

作者:互联网

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,它可能在我的工作系统上.

标签:linux,freepascal
来源: https://codeday.me/bug/20190625/1286661.html