VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1294|回复: 31

[已解决]怎样能让开机,就自动重启服务进程?

[复制链接]
14_avatar_middle
最佳答案
1 
online_vip 发表于 2021-3-17 11:28:11 | 显示全部楼层 |阅读模式

电脑重启后进程的pid值会更新吗?

具体场景:有一台电脑,我自己写了个服务程序,用于禁用网卡,开机后,这个服务的pid值,不改变,具体来说应该是有时候改变,有时候又不改变
,怎样能让开机,就自动重启服务进程?

因为我觉得是,操作系统未重启,导致的服务未重启,所以我的程序就不执行了

最佳答案
70_avatar_small
2021-3-17 13:45:46
SyY 发表于 2021-3-17 12:17
是这样的,禁用网卡功能是while循环,这个功能,我写在一个服务里面,服务开机自启动就会调用这个while循 ...

正常关机应该是重启的,但是windows关机也有保存进程信息的这种机制
https://docs.microsoft.com/zh-cn ... redirectedfrom=MSDN
https://blog.csdn.net/wpwalter/article/details/79201590
就是不清楚这个是否适用于服务程序

我的设想的实现
服务里代码
while(1){
    if(网卡未被禁用){
      禁用网卡
   }
   sleep
}
这种实现能解决您的问题吗?




上一篇:本人小白,刚学会简单的编程,望大神指点下
下一篇:文件io操作相关问题
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 11:38:41 | 显示全部楼层
我有个疑问,如果是个服务,为啥不定时扫描呢,只是启动时扫描一下?
”导致的服务未重启,所以我的程序就不执行 “ 这是个啥现象呢
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 11:42:28 | 显示全部楼层
tony666 发表于 2021-3-17 11:38
我有个疑问,如果是个服务,为啥不定时扫描呢,只是启动时扫描一下?
”导致的服务未重启,所以我的程序就 ...

服务的启动不是操作系统开机时候自己调用的吗?服务的生命周期是我写的时候的while循环里面的部分,有效吗?
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 11:44:12 | 显示全部楼层
tony666 发表于 2021-3-17 11:38
我有个疑问,如果是个服务,为啥不定时扫描呢,只是启动时扫描一下?
”导致的服务未重启,所以我的程序就 ...

定时扫描?服务的开机自启动,我怎么控制?我能开机对它定时扫描吗?
75_avatar_middle
最佳答案
23 
online_supermod 发表于 2021-3-17 11:54:07 | 显示全部楼层
不能写成开机自启嘛?重启之后pid是会改变得
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 11:56:23 | 显示全部楼层
wl1383838438 发表于 2021-3-17 11:54
不能写成开机自启嘛?重启之后pid是会改变得

写的是开机自启动啊,但是重启之后pid值有时候变,有时候不变,所以我才怀疑是操作系统的问题?

所以我想让开机,自动重启服务,有拌办法吗?
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 12:05:39 | 显示全部楼层
SyY 发表于 2021-3-17 11:42
服务的启动不是操作系统开机时候自己调用的吗?服务的生命周期是我写的时候的while循环里面的部分,有效 ...

服务是系统调的,而且一般自己实现的部分都是while循环,循环里 干事 + 等待 ,不会执行完就退出的。


执行完就退出的,那个是普通程序,添加开机启动项

不清楚你目前程序到底是哪种
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 12:17:29 | 显示全部楼层
tony666 发表于 2021-3-17 12:05
服务是系统调的,而且一般自己实现的部分都是while循环,循环里 干事 + 等待 ,不会执行完就退出的。

...

是这样的,禁用网卡功能是while循环,这个功能,我写在一个服务里面,服务开机自启动就会调用这个while循环,当识别到网卡被禁用后,就会退出禁用的while循环,在服务的开头位置我是没有循环的,因为我默认是系统来调服务,但是现在的问题是,系统有时候调用服务,有时候不调用,具体现象就是服务的pid值,有时候改变,有时候不改变,这说明服务没有重启吧?

所以我想说,每次开关机,服务都会被系统自动重启吗?
75_avatar_middle
最佳答案
23 
online_supermod 发表于 2021-3-17 12:25:58 | 显示全部楼层
SyY 发表于 2021-3-17 11:56
写的是开机自启动啊,但是重启之后pid值有时候变,有时候不变,所以我才怀疑是操作系统的问题?

所以 ...

要不获取 进程链表试试,坚持该进程得名称对比,有就不做任何事情,没有就调用?
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 13:45:46 | 显示全部楼层    本楼为最佳答案   
bestAnswer
SyY 发表于 2021-3-17 12:17
是这样的,禁用网卡功能是while循环,这个功能,我写在一个服务里面,服务开机自启动就会调用这个while循 ...

正常关机应该是重启的,但是windows关机也有保存进程信息的这种机制
https://docs.microsoft.com/zh-cn ... redirectedfrom=MSDN
https://blog.csdn.net/wpwalter/article/details/79201590
就是不清楚这个是否适用于服务程序

我的设想的实现
服务里代码
while(1){
    if(网卡未被禁用){
      禁用网卡
   }
   sleep
}
这种实现能解决您的问题吗?
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 14:39:39 | 显示全部楼层
你写的服务里的代码,和我思路是一样,我只是禁用完网卡后break了,但是问题是在“服务里代码”那一行,是windows来开机来启动的,目前貌似没启动,所以导致后面的while循环没执行
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 14:40:56 | 显示全部楼层
tony666 发表于 2021-3-17 13:45
正常关机应该是重启的,但是windows关机也有保存进程信息的这种机制
https://docs.microsoft.com/zh-cn/ ...


你写的服务里的代码,和我思路是一样,我只是禁用完网卡后break了,但是问题是在“服务里代码”那一行,是windows来开机来启动的,目前貌似没启动,所以导致后面的while循环没执行
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 14:57:42 | 显示全部楼层
tony666 发表于 2021-3-17 13:45
正常关机应该是重启的,但是windows关机也有保存进程信息的这种机制
https://docs.microsoft.com/zh-cn/ ...

这三次的是重启的,pid值情况
IMG_20210317_141549.jpg
IMG_20210317_141833.jpg
IMG_20210317_142006.jpg
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 15:00:06 | 显示全部楼层
tony666 发表于 2021-3-17 13:45
正常关机应该是重启的,但是windows关机也有保存进程信息的这种机制
https://docs.microsoft.com/zh-cn/ ...

其中的AAAA服务,三次关机重启,都是一个pid相同的,其他的也是,但是有一个特例,就是那个蓝牙用户支持的服务bluetoothuserservice_97e的那个,每次都是变化的,我想要的就是那样的效果了,这怎么能做到呢?
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 15:01:47 | 显示全部楼层
SyY 发表于 2021-3-17 14:57
这三次的是重启的,pid值情况

都没变。。。不懂怎样能让开机,就自动重启服务进程?
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 15:09:09 | 显示全部楼层
tony666 发表于 2021-3-17 15:01
都没变。。。不懂

你看,其中的bluetoothuserservice_97e的那个  这个服务,每次都在变化,但是其他的都没变
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 15:26:09 | 显示全部楼层
本帖最后由 tony666 于 2021-3-17 15:29 编辑
SyY 发表于 2021-3-17 15:09
你看,其中的bluetoothuserservice_97e的那个  这个服务,每次都在变化,但是其他的都没变


这个连名字都变了。。它似乎是上边那个服务开机时候新创建的,
话说你也可用用这种,一个不变的服务,开机的时候创建一个新服务
我win7电脑重启了没发现这种现象啊,晚上回去用win10试试
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 15:52:52 | 显示全部楼层
tony666 发表于 2021-3-17 15:26
这个连名字都变了。。它似乎是上边那个服务开机时候新创建的,
话说你也可用用这种,一个不变的服务, ...

关键是我要怎么知道开机了这个状态?注册表?来启动服务?
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-3-17 16:01:29 | 显示全部楼层
SyY 发表于 2021-3-17 15:52
关键是我要怎么知道开机了这个状态?注册表?来启动服务?

哦。。有道理。。按照目前来看,确实不知道。我觉得解决办法还得是按照我10楼的方法,一直循环。。
14_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2021-3-17 16:06:02 | 显示全部楼层
tony666 发表于 2021-3-17 16:01
哦。。有道理。。按照目前来看,确实不知道。我觉得解决办法还得是按照我10楼的方法,一直循环。。

一直循环也不是不可以,但是禁用了,我要启用的时候咋处理?它会一直被禁用
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-5-29 23:37

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表