繁体   English   中英

使用Python os.execl *替换自身进程

Using Python os.execl* replace self process

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用Python os.execl *函数将自身进程(运行web2py)替换为不同的参数,例如,绑定IP地址。 尽管成功替换了我发现的实例,但它并没有杀死原始进程,而只是创建了一个新的子进程。 例如,原始的web2py进程在10.1.1.1:8000上运行。 然后在页面的控制器中运行

os.execl('python', 'python', 'web2py.py', '--ip=10.1.1.2', '--port=8000', '--password=')

好的,现在我们可以在10.1.1.2:8000上打开网页。 但是,如果我们在相同的过程中再次更改回10.1.1.1:8000。 新进程抱怨该端口已被另一个进程使用。

有没有其他方法可以自己“刷新” web2py服务?

1 个回复

os.execl取代了当前进程,但保留了开放端口; 错误消息“端口正在被另一个进程使用”是错误的,它实际上已被当前进程使用。

在Unix上,打开文件描述符是在对exec的调用中继承的,除非fd被FD_CLOEXEC标记为close-on-exec。 http://bugs.python.org/issue12107上,这是一个问题。

您应该告诉web2py在重新执行进程之前关闭端口,或者使用fcntl模块将fd标记为close-on-exec:

fcntl.fcntl(socket, fcntl.F_SETFD, fcntl.fcntl(socket, fcntl.F_GETFD) | fcntl.FD_CLOEXEC)
2 使用fork()和execl()创建2个子进程

我试图fork()一个进程,并使其执行ffmpeg屏幕录像(使用SIGINT停止该进程)。 我已经编写了一个forks()的popen2()函数,然后像下面这样调用execl()。 但是使用此命令我无法杀死fork进程,因为我在ps中看到2个子进程。 这是我正在使用的popen2()函数,它返回 ...

3 用execl()执行连续的进程

我希望有一个简单的问题。 我想连续执行三个名为“ brute_seq”,“ brute_pth”和“ brute_omp”的程序; 基本上执行“ brute_seq”,等到完成后再执行“ brute_pth”,对“ brute_omp”执行相同的操作。 我尝试了几种不同的方法,到目前为 ...

4 在程序中使用fork()和execl()将其他C程序作为进程执行

我是同时使用fork()和exec()的新手,我试图从名为Fork.c的C文件中运行三个不同的进程,以便可以在其他三个.c文件中执行代码。 这些c文件中的每个文件都将使用不同的方法来近似pi的值,但这一点都不重要。 我的主要问题基本上是不知道execl()在处理C文件时是如何工作的,并且 ...

2013-10-12 17:55:37 0 1226   c/ fork
5 使用fork()和execl(…)时父进程未结束

我是Linux编程的新手,我试图了解fork()和exec函数的工作方式。 为了让我自己更容易,我创建了一个简单的Dummy可执行文件(使用gcc -o Dummy.exe ...),并尝试调用fork函数,以便可以用创建的Dummy.exe可执行文件替换子项。 我遇到的问题是,当我运行 ...

2012-06-29 17:09:58 1 426   fork
7 确定通过fork()/ execl()运行的进程的结果

我有这个代码 可以运行一个或多个命令。 如果给定命令之一失败,我试图使其停止。 实际上,即使一个命令失败,它也会继续运行 我确实尝试过使用wait()和waitpid()多种解决方案,但仍然无法正常工作。 ...

8 如何使用管道/ execl在4个进程之间最佳地构造进程间通信?

我正在尝试建立一个使用进程间通信的程序,以使用管道/ execl在四个进程之间进行通信。 这是演示管道使用情况的一项家庭作业问题的一部分,但是我在将管道缠绕在管道上时遇到了一些困难(即过程树的增长方式)。 这些进程将成为我系统上二进制文件的实例,因此使用execl。 为了简要概述我要完成的 ...

9 使用Execl执行我的程序

我编写了一个程序,该程序使用文件名作为参数,打开文件,解析其内容并执行一些操作。 我正在编写一个测试程序,该程序将通过执行该程序进行测试。 这是我的测试课: 当我打开file.txt ,我只看到一个空白文件。 我的./a.out程序正在发出一个解析错误( fgets返回NULL ...

10 execl 的使用(参数)

C 的新手。所以我有一个名为 test.c 的程序(不需要任何参数来启动,像这样编译“gcc test.c -o test”)我想让我的另一个程序执行测试我知道我必须使用 execl但我就是无法理解 execl 函数中的参数 execl(代码在这里) ...

2018-11-11 01:53:04 1 928   c/ execl
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM