gpt4 book ai didi

linux - 如何让 Free Pascal 控制台应用程序运行在 "forever"?

转载 作者:IT王子 更新时间:2023-10-29 00:55:17 24 4
gpt4 key购买 nike

在 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);

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

最佳答案

这是一个非常的好问题,我不知道为什么人们会否决它。一个来 self 。

这不仅仅是永远等待的问题(while checkforsomeevent do sleep(10); 会在 checkforsomeevent 检查你想要终止的任何事件的地方执行此操作,如果你不想终止则为 TRUE。因为线程没有任何可做,sleep(0) 似乎是在浪费资源)

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

我不完全确定这是正常运行时间,还是 CPU 资源。

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

我当时研究了一下,看来你必须注册一个窗口句柄并处理消息才能避免这种情况。我尝试了这个但失败了,并且找不到补丁 atm,它可能在我的工作系统上。

关于linux - 如何让 Free Pascal 控制台应用程序运行在 "forever"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14090697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com