python向其他进程注入代码(python注入微信进程)

  • 1、如何将调试器附加到python子进程
  • 2、python遍历目录就是这么简单
  • 3、如何让 Python 代码常驻在服务器进程中

从“调试”菜单中选择“附加到进程”。(如果没有打开任何项目,请从“工具”菜单中选择“附加到进程”。)

在“附加到进程”对话框的“可用进程”列表中,找到要附加到的程序。

如果要调试的程序运行在另一台计算器上,必须首先选择该远程计算机。(有关更多信息,请参见

。)如果进程在其他用户帐户下运行,请选中“显示来自所有用户的进程”框。

如果已通过“远程桌面连接”连接,请选中“显示所有会话中的进程”框。

在“附加到”框中,确保要调试的代码类型已列出,或“自动: 托管代码”已显示。否则:

单击“选择”。

在“选择代码类型”对话框中,单击“调试以下代码类型”,然后选择要调试的类型。

单击“确定”。

单击“附加”按钮。

打开“进程”对话框时,会自动显示“可用进程”列表。对话框打开时进程仍能在后台中开始和停止,因此内容可能并非始终是最新内容。通过按“刷新”,可以随时刷新列表以查看当前进程列表。

调试时可以附加到多个程序,但在任何给定时间,调试器中只有一个程序处于活动状态。可以在“调试位置”工具栏中设置活动程序。有关更多信息,请参见

所有的“调试”菜单执行命令都会影响活动程序。可以通过“进程”对话框中断任何已调试的程序。有关更多信息,请参见

注意为使调试器附加到用 Visual C++ 编写的代码,该代码需要发出

DebuggableAttribute

。可通过链接

/ASSEMBLYDEBUG

链接器选项将它自动添加到代码中。

注意如果试图附加到不受信任的用户帐户拥有的进程,则会出现安全警告对话框确认。有关更多信息,请参见

安全警告:附加到不受信任的进程可能会有危险。

注意在某些情况下,在“终端服务”(“远程桌面”)会话中进行调试时,“可用进程”列表不会显示所有可用进程。在 Windows Server 2003 或更高版本上,如果您以受限用户身份运行 Visual Studio,则“可用进程”列表不会显示在会话 0 中运行的进程,会话 0 用于服务以及包括 w3wp.exe 在内的其他服务器进程。您可以通过以下方法解决该问题:使用管理员帐户运行 Visual Studio 或从服务器控制台而不是“终端服务”会话运行 Visual Studio。如果这两种解决方法都不奏效,第三种方法是通过从 Windows 命令行运行

vsjitdebugger.exe -pProcessId来附加到进程。您可以使用 tlist.exe 来确定进程 ID。

有时我们有列出目录下都有哪些文件和子目录的需求,这种情况是有现成命令可用的,比如windows下的dir命令,linux下的ls命令都可以,那我们用python代码怎么实现呢?

我们利用python丰富的库很容易就能实现一个简易版本,下面我们就用4种方法来实现它。

一、使用os.popen

os.popen工作原理是新建一个子进程,然后用这个子进程执行命令,父进程与子进程间通过管道进行通信。

根据调用popen时的传参,我们可以通过管道读取子进程的输出也可以向子进程写数据,默认是读取子进程的输出。

从以上描述可以看出popen是非常通用的,不是只能用于我们这个例子哦。

那我们开始用它实现我们的需求吧,代码如下:

哈哈,是不是很简单,这种方式虽然能达到目的但其实并不是我们想要的,我们本来就是要实现ls的,结果调用了ls,所以严格意义上来说我们并没有实现ls,那让我们继续往下看其它方法吧,嘿嘿。

二、使用glob.glob

glob可以根据你使用的通配符对文件进行匹配,利用这个特性我们可以列出当前目录下都有哪些文件和子目录,如下代码:

三、使用os.listdir

os.listdir同样可以列出某个目录下都有哪些文件和子目录,如下代码:

四、使用os.walk

os.walk在遍历目录方面非常强大,它不但可以遍历你需要的目录,也可以递归遍历子目录且递归的深度可以用代码控制,下面让我们分别看下怎么遍历整个目录树以及怎么控制深度吧。

os.walk默认是遍历整个目录树的,如下代码就会递归打印出当前目录下所有文件:

那我们怎么控制遍历的深度,比如只遍历n层呢?其实很简单,只需要定义一个深度变量,然后到达n后跳出循环即可,如下代码就只遍历1层:

至此我们已经写完4种方法了,如果你还有其他方法,欢迎评论交流。

一、nohup

nohup,即 no hangup,nohup 的用途就是让提交的命令忽略 hangup 信号,从而使我们的进程避免中途被中断。它可以让 python 脚本和服务器连接端的 session 分离,以达到退出后依旧执行:

$ chmod +x /your_path/yourscript.py   # 先设置可执行权限$ nohup python /your_path/yourscript.py# 切记退出的 Terminal 的时候,不要 ctrl+c 退出,而是直接关闭,不然 Nohup 就被你关闭了。

如何关闭这个一直执行的进程呢:

# 找到对应的进程 PID

$ ps -ef | grep python

# 返回内容如:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

# kill 掉该进程即可:

$ kill -9 2430

PS:nohup 在服务器重启之后就失效了,所以并不完美。

二、将命令写入 Linux 启动脚本

Linux 在启动的时候会执行 /etc/rc.local 里面的脚本,所以只要在这里添加执行命令就可以:

$ vim /etc/rc.local

# 如果是 Centos 添加以下内容:

/your_path/python3.4 /your_path/yourscript.py

# 以上内容需要添加在 exit 命令前,而且由于在执行 rc.local 脚本时,PATH 环境变量未全部初始化,因此命令需要使用绝对路径。

PS:这种方式的缺点是如果脚本挂了,那么不会自动重新启动。

三、使用 Supervisor 进程管理工具

详见这篇文章:使用 Supervisor 管理服务器后台进程,在服务器重启和脚本出错后,可以完美重启,推荐。

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126292.html

汽车小知识 小米SU7 今日油价 油耗计算器 电耗计算器 购置税计算器 贷款计算器 保险计算器 交通违章代码 体育新闻
(0)
简单一点的头像简单一点
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

发表回复

登录后才能评论