• 2187阅读
  • 13回复

这个例子中LogTail类析构函数中的terminate()函数调用有什么用? [复制链接]

上一主题 下一主题
离线ustone
 

只看楼主 倒序阅读 楼主  发表于: 2018-11-13

我的理解,main函数结束的时候,tail对象析构,如果不调用terminate()函数,主进程自己也就结束了,子进程也就随之终止。那terminate()函数有什么用,它终止的是主进程吧?

离线ustone

只看该作者 1楼 发表于: 2018-11-26
顶一下
离线dbzhang800

只看该作者 2楼 发表于: 2018-11-26
弱弱问一句,这是什么上面的例子?能给点上下文吗

这个terminate() 是Qt里面的函数,还是来自其他地方
离线ustone

只看该作者 3楼 发表于: 2018-11-27
C++ Qt设计模式(第2版)中的例子,不好意思,缺了一张图(帖子只能插入5张图,我截了6张)
离线ustone

只看该作者 4楼 发表于: 2018-11-27
回 dbzhang800 的帖子
dbzhang800:弱弱问一句,这是什么上面的例子?能给点上下文吗
这个terminate() 是Qt里面的函数,还是来自其他地方 (2018-11-26 20:02) 

见3楼~
离线dbzhang800

只看该作者 5楼 发表于: 2018-11-27
回 ustone 的帖子
ustone:C++ Qt设计模式(第2版)中的例子,不好意思,缺了一张图(帖子只能插入5张图,我截了6张)
[图片] (2018-11-27 12:04) 

这是QProcess的派生类,所以问题就是下面两个函数的区别

QProcess::terminate()
QProcess::kill()

QProcess析构时会调用 kill()函数来强制终止进程,但是不少程序特别是GUI程序一般更希望接收到WM_CLOSE或SIGTERM后自愿结束进程,而不是被暴力杀死
离线ustone

只看该作者 6楼 发表于: 2018-11-27
回 dbzhang800 的帖子
dbzhang800:这是QProcess的派生类,所以问题就是下面两个函数的区别
QProcess::terminate()
QProcess::kill()
....... (2018-11-27 17:44) 

tail命令行程序,用terminate()函数是不是有误?
为什么terminate()函数是槽函数,而不是公有方法呢?
离线dbzhang800

只看该作者 7楼 发表于: 2018-11-27
回 ustone 的帖子
ustone:tail命令行程序,用terminate()函数是不是有误?
为什么terminate()函数是槽函数,而不是公有方法呢? (2018-11-27 20:12) 

1. 这应该算比较好的方式吧,如果允许的话,调完这个函数,可以再等待2s,如果这个进程没有退出再kill()它。Unix 控制台程序可以处理 SIGTERM,Windows下的控制台接收到消息WM_CLOSE 也会转换成 CTRL_CLOSE_EVENT

2. terminate() 不是QProcess的公有方法吗??
离线ustone

只看该作者 8楼 发表于: 2018-11-27
回 dbzhang800 的帖子
dbzhang800:1. 这应该算比较好的方式吧,如果允许的话,调完这个函数,可以再等待2s,如果这个进程没有退出再kill()它。Unix 控制台程序可以处理 SIGTERM,Windows下的控制台接收到消息WM_CLOSE 也会转换成 CTRL_CLOSE_EVENT
2. terminate() 不是QProcess的公有方法吗?? (2018-11-27 21:10) 

我看了是这个:
Public Slots
void    kill()
void    terminate()
离线ustone

只看该作者 9楼 发表于: 2018-12-18
为什么terminate()函数是槽函数,而不是公有方法呢?
离线dbzhang800

只看该作者 10楼 发表于: 2018-12-18
回 ustone 的帖子
ustone:为什么terminate()函数是槽函数,而不是公有方法呢? (2018-12-18 16:33) 

??
离线ustone

只看该作者 11楼 发表于: 2018-12-19
回 dbzhang800 的帖子
dbzhang800:?? (2018-12-18 22:13) 

不是普通的公有方法,而是槽函数。
离线dbzhang800

只看该作者 12楼 发表于: 2018-12-19
回 ustone 的帖子
ustone:不是普通的公有方法,而是槽函数。 (2018-12-19 10:54) 

公有槽不就是普通的公有方法么?

或者反过来说,公有方法在Qt5中不也和槽函数一样也可以直接和signal连接么?
离线ustone

只看该作者 13楼 发表于: 2018-12-19
回 dbzhang800 的帖子
dbzhang800:公有槽不就是普通的公有方法么?
或者反过来说,公有方法在Qt5中不也和槽函数一样也可以直接和signal连接么? (2018-12-19 18:41) 

虽然公有槽和公有方法效果一样,但毕竟它归为槽函数了,不知道有什么特别的用意。
快速回复
限100 字节
 
上一个 下一个