Avatar
🎯

Organizations

2 results for
  • 问题背景 前两天室友问我,怎么 kill 掉在 Shell 脚本中调用的 Python 进程,我第一时间想到的是:打开 htop,把它调整成树形布局,然后搜索 Shell 脚本,选中之后把它 kill 掉,Python 进程应该也会被 kill 掉。 但是结果是 Python 进程并没有变红,而是成为了 init 进程的子进程。 孤儿进程是怎么产生的 大二学 OS 学到父进程和子进程的概念的时候,还是只是以为父进程和子进程之间应该存在牢固的控制关系,父进程退出时子进程也应该默认退出。 但是 OS 的实际行为不是这样,子进程和父进程只是说明了二者之间存在谁创建谁的关系,并不存在牢固的控制关系(而是类似于现实中的父子关系)。 父进程结束时子进程并没有结束,子进程成为孤儿进程,会被 init 进程收养 父进程崩溃或异常终止 并发和竞争条件导致父子进程的结束顺序错误 如何避免孤儿进程的产生 其实就是需要在程序设计时,考虑到上述的这几种可能导致孤儿进程产生的原因,然后对异常情况进行注册和处理。对于开始时的这个引入问题而言,答案可以写成以下两个脚本: #!/bin/bash # 定义一个函数来处理信号 cleanup() { echo "捕捉到终止信号,正在终止 Python 进程..." kill $PYTHON_PID exit } # 在接收到 SIGINT || SIGTERM || SIGKILL 时执行 cleanup 函数 trap 'cleanup' SIGINT SIGTERM # 启动 Python 脚本并获取其进程 ID python example_python.py & PYTHON_PID=$!
    OS Shell Python Created Mon, 29 Jan 2024 10:31:56 +0800
  • Get Correct Version microsoft-edge-dev --version The output is Microsoft Edge 91.0.831.1 dev in my case. Get Corresponding WebDriver Find the corresponding version at msedgewebdriverstorage and download the zip. Extract it to you path like /usr/local/bin or $HOME/.local/bin. Write Code Following is a example. from msedge.selenium_tools import EdgeOptions, Edge options = EdgeOptions() options.use_chromium = True options.binary_location = r"/usr/bin/microsoft-edge-dev" options.set_capability("platform", "LINUX") webdriver_path = r"/home/ayamir/.local/bin/msedgewebdriver" browser = Edge(options=options, executable_path=webdriver_path) browser.get("http://localhost:8000") assert "Django" in browser.
    Python Created Fri, 26 Mar 2021 21:43:35 +0800