我在Linux上工作,我在Linux终端上执行了for循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt是一个包含我在vim编辑器中一个接一个打开的大量文件条目的文件。现在,我必须跳过打开中间的其他文件。(即,我必须中断for循环)。有什么建议如何获得运行for循环的PID吗?然后杀掉同样的人。提前谢谢。
我正在linux上用C语言开发一个简单的程序,其中有一个线程,它检查程序开始以来经过的时间,当它们经过10秒时,向主程序发送一个结束信号(例如,SIGINT或SIGTERM ),这将使它以一种干净的方式结束。
C程序附在末尾。
当执行对thread_kill的调用时,会发生分段错误。
使用gdb运行该程序的结果如下:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff77f2700 (LWP 25472)]
__pthread_kill (threadid=25466, signo=
from concurrent.futures import ProcessPoolExecutor
import time
def foo(num):
time.sleep(0.5)
print(num)
if __name__ == "__main__":
while True:
with ProcessPoolExecutor(max_workers=8) as exe:
exe.map(foo, range(1,4))
我正在尝试使用模块ProcessPoolExecutor。并且在主进程启动一段时间
我在Linux平台上使用Perl。首先,我创建了一个线程,并在这个新线程中派生了一个子进程。当新线程中的父进程返回并加入主线程时,我想向在创建的线程中产生的子进程发送TERM信号,但信号处理程序不起作用,子进程变成僵尸。下面是我的代码:
use strict;
use warnings;
use Thread 'async';
use POSIX;
my $thrd = async {
my $pid = fork();
if ($pid == 0) {
$SIG{TERM} = \&child_exit;
`echo
为什么这种差别很重要?下面代码中的两个块与最后一行不同:
#!/bin/bash
if [[ -n "$1" ]]; then
sleep 1 &
p=$!
kill $p &> /dev/null
else
sleep 1 &
p=$!
kill $p &> /dev/null
/bin/true # This line is the sole difference.
fi
把它命名为a.sh,我得到(在我的Linux机器上)
$ ./a.sh
/a.sh: line 16:
因此,可以使用timeout来设置进程/命令的最终时限,就像提到的和一样。例如,timeout 300 sleep 1000将在300秒后返回提示,而不是1000秒。
但是,在进程仍在运行时,是否有任何方法可以动态地修改此限制?所以这就是我要找的。
at time 0 : timeout 300 python long_run.py
at time 250 : <some way to extend the timeout limit by another 300 minutes or so>
我试过两种方法,但没能成功。
通过GDB
我试图使用gdb附加到timeout进程。它