标签: kill-process

当它杀死一个进程时,linux是否释放了自旋锁/信号量?

如果一个进程持有一些自旋锁或信号量,并意外退出(例如,被linux杀死),linux会正确释放这些锁吗?如果linux没有做到这一点,为什么?

linux semaphore kill-process spinlock process-exit

7
推荐指数
1
解决办法
4358
查看次数

fclose():18不是有效的流资源

我正在尝试使用proc_open执行一个进程.管道处理过程的I/O !!

$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);
Run Code Online (Sandbox Code Playgroud)

现在,实际上,我打开的"c程序"有时会卡住,我添加了一个max_time_limit检查,强制关闭进程.我已经添加了回调函数 - 即onExit - (使用"call_user_function"),以便以有效方式或强制方式处理"进程退出"时的信息.

在"退出"功能中,我正在关闭i/o管道

 foreach ($pipes as $pipe) {
    fclose($pipe);
 }
Run Code Online (Sandbox Code Playgroud)

如果进程有一个有效的退出,上面的工作完全正常.但是,在我强行杀死我的进程的情况下,我调用proc_terminate来执行此操作.我知道进程的终止也会继续并关闭所有I/O管道,但问题是由于回调,我的"onExit"函数进程总是被调用(这就是我希望它的方式.. .as我需要做更多的处理).现在,在这种情况下,当我尝试关闭管道时,我收到以下错误:

fclose(): 18 is not a valid stream resource 
Run Code Online (Sandbox Code Playgroud)

我尝试使用"ftell"来检查管道是否有效,但是这也是错误的.如何检查管道是否已经关闭?

php proc-open kill-process fclose

7
推荐指数
1
解决办法
1万
查看次数

如何在多进程中杀死所有池工作者?

我想阻止来自单个工作者的所有线程.

我有一个包含10名工人的线程池:

def myfunction(i):
    print(i) 
    if (i == 20):
        sys.exit()

p = multiprocessing.Pool(10, init_worker) 

for i in range(100):
    p.apply_async(myfunction, (i,))
Run Code Online (Sandbox Code Playgroud)

我的程序没有停止,其他进程继续工作,直到所有100次迭代完成.我想完全从调用的线程内部停止池sys.exit().它当前编写的方式只会阻止调用的工作者sys.exit().

python multithreading multiprocessing kill-process

7
推荐指数
1
解决办法
2万
查看次数

我长期奔跑的laravel 4命令一直被杀死

我有一个实现laravel命令的laravel 4 web项目.

当在开发宅基地vm中运行时,它运行完成(总时间约为40秒).

但是,在生产服务器上运行它时,它会在命令行上以"已终止"输出退出.

起初我以为它是cli php.ini中的max_execution_time,所以我把它设置为0(无限时间).

我怎样才能找出杀死我命令的内容?

我使用标准的artisan invokation在ssh终端上运行它:

php artisan commandarea:commandname

laravel 4在某处有命令时限吗?

vps是一个带有mysql,nginx和php-fpm的Ubuntu 4.10机器

php command kill-process laravel

7
推荐指数
1
解决办法
4671
查看次数

如何停止Chrome后台更新杀死我的应用程序?

更新的帖子

问题

我们有各种日志,表明Chrome的后台更新正在终止使用Web视图的应用程序。所有日志都遵循类似的模式;

3034  3049 I ActivityManager: Force stopping com.android.chrome appid=10115 user=-1: installPackageLI
3034  3049 I ActivityManager: Killing 963:com.google.android.googlequicksearchbox:search/u0a80 (adj 500): stop com.android.chrome,installPackageLI
3034  3049 W ActivityManager: Scheduling restart of crashed service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.shared.util.keepalive.StandaloneKeepAlive$KeepAliveService in 1000ms
3034  3049 W ActivityManager: Scheduling restart of crashed service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.nowoverlayservice.DrawerOverlayService in 10999ms
3034  3049 I ActivityManager: Killing 1709:com.my.app/u0a292 (adj 0): stop com.android.chrome,installPackageLI
Run Code Online (Sandbox Code Playgroud)

我从这里的另一个开发人员那里发现了类似的问题;https://seap.samsung.com/forum-topic/activitymanager-kills-our-pro-kiosk-mode-app-chrome-update。它讨论了Knox中提供的API,但我无法确定是否有更多信息。理想情况下,我希望使用本机解决方案或某种AndroidManifest条目来实现这一目的。

我了解,当一个应用程序依赖于另一个应用程序时,可能需要关闭并重新启动才能保持奇偶校验。但是,我们的应用程序是一个全屏活动应用程序,在这种情况下才被启动,这似乎很奇怪,没有解决方法。

问题

我如何等待我们的应用完成(或失去焦点)才能进行更新?我的应用程序设置中缺少什么可以避免诸如此类的问题吗?可能是Webview的使用是问题所在?

应用程式资讯

我们对网络视图的依赖性很可能是第三方广告提供商的依赖性。该应用程序是在Unity中制作的。我可以更改AndroidManifest本身,也可以更新Player和主要Activity的本机版本。如果需要,我也可以编写本机代码。我怀疑这对于本机应用程序也是一个问题。


原始帖子 -标题:确定对Chrome的依赖关系(应用在Chrome更新中被终止。

我注意到,每次Chrome应用获得更新时,我的应用都会被杀死。

Force stopping com.android.chrome appid=10145 user=-1: installPackageLI
Killing 14427:my.application.com/u0a263 (adj 200): stop com.android.chrome,installPackageLI …
Run Code Online (Sandbox Code Playgroud)

android kill-process android-webview android-chrome

7
推荐指数
1
解决办法
413
查看次数

如果获得唤醒锁并且我的应用程序崩溃了,我该怎么办?

当标志设置为true时,我的应用程序始终运行后台服务.如果是这种情况,即使应用程序关闭,此后台服务仍需要CPU时间.如果我获得唤醒锁(不是用于"屏幕开启"目的而是用于此后台服务)然后应用程序崩溃或用户FC它,那么我无法释放此唤醒锁.

预期结果是什么?

Android知道这个并发布唤醒锁吗?

我应该以什么方式管理这种情况?

crash android process kill-process wakelock

6
推荐指数
1
解决办法
1451
查看次数

如何在弹性搜索集群中杀死搜索请求的线程?有没有一些API可以做到这一点?

我创建了一个包含大数据的弹性搜索集群,客户端可以向其发送搜索请求.有时,群集需要花费很多时间来处理一个请求.我的问题是,是否有任何API杀死指定的线程,这花费了太多时间?

kill-process elasticsearch

6
推荐指数
1
解决办法
3243
查看次数

如何终止使用ProcessBuilder正常创建的进程

我在Java应用程序中使用ProcessBuilder创建进程.创建的进程执行一些FFMPEG命令,这些命令实际上将RTSP流复制到指定的目标媒体文件中.

ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
Run Code Online (Sandbox Code Playgroud)

我想在完成执行之前关闭该进程.因此,如果我直接在Windows CMD中运行此FFMPEG命令,然后在5秒后按"CTRL + C",则进程get终止,状态为"2".我可以播放到目前为止创建的媒体文件.

所以,如果我在Java应用程序中执行相同的操作:

 process.destroy(); //I call this method after 5 sec
Run Code Online (Sandbox Code Playgroud)

我得到状态代码'1',这意味着异常终止.我通过以下方式获得状态:

 processToExecute.destroy();
 processToExecute.exitValue(); //This return me status '1'
Run Code Online (Sandbox Code Playgroud)

我无法播放媒体文件,我认为这是由于该过程的异常终止.

那么我如何终止使用ProcessBuilder创建的进程,就像我们在CMD中使用(CTRL + C)一样,以便我可以播放创建的媒体文件?

我想在Java应用程序中终止进程(使用ProcessBuilder创建),状态代码为'2',这是我在使用CMD终止进程时获得的.

编辑#01:---分享调查结果

因此,当我尝试在应用终止后删除该文件时,我收到以下错误:

The Action Can't be Performed Because File is Opened in FFMPEG.exe
Run Code Online (Sandbox Code Playgroud)

这意味着该进程不会终止它正在执行的命令.该命令仍然占用了这个文件,这就是为什么我无法播放它.当我打电话时,进程终止:

 processToExecute.destroy();
Run Code Online (Sandbox Code Playgroud)

但是,它正在执行的任务(即执行命令)仍然有效.奇怪!!!!

编辑#02:分享终极理由

实际上如果我在进程运行时直接在cmd中按'CTRL + C'或'q',那么它会成功终止进程,并且此进程在当前正在执行的进程列表中不再可见.

并以编程方式调用方法:

cmd> processToExecute.destroy();
Run Code Online (Sandbox Code Playgroud)

它终止了进程,但当我看到当前正在执行的进程列表时,我仍然可以在那里看到它们.

并存在相同的情况如果我尝试使用另一个CMD中的'taskkill'或'kill'命令终止此过程,方法是指定其进程异常终止的名称或pid.

PS我使用以下命令查看正在运行的进程:

tasklist
Run Code Online (Sandbox Code Playgroud)

因此,它证明了来自Application的destroy()方法和来自另一个CMD的'taskkill或kill'命令通常不会按"CTRL + C"和"q"来终止该过程.

java windows ffmpeg kill-process processbuilder

6
推荐指数
1
解决办法
7643
查看次数

处理进程是否被外部终止

我正在编写一个程序,在一个进程中创建多个线程。

我需要处理如果进程被某人使用kill -9信号或Ctrl + C从外部终止,我的程序应该在关闭之前执行一些操作,例如它应该将进程的状态更改为数据库中的中止。

我该如何处理?

我需要addShutdownHook()?或者还有其他更好的解决方案来解决我的问题吗?

我已经添加了 :

Runtime.getRuntime().addShutdownHook( new Thread() {

            @Override
            public void run() {
                logger.info( "Running Shutdown Hook" );
                //call some method
                System.out.println( "Running Shutdown Hook" );
            }
        } );
Run Code Online (Sandbox Code Playgroud)

在我的主要方法中,但它似乎不起作用。

java multithreading sigkill kill-process shutdown-hook

6
推荐指数
1
解决办法
1212
查看次数

正确终止在线程中运行的 Flask Web 应用程序

如何正确终止在单独线程中启动的 Flask Web 应用程序?我发现了一个不完整的答案,不清楚如何去做。下面的脚本启动一个线程,该线程又启动一个 Flask 应用程序。当我按CTRL+ 时C,某些内容不会被终止,并且脚本永远不会停止。在正确except KeyboardInterrupt:终止app和之后添加代码会很好thread_webAPP()。我知道如何终止线程,但首先我需要终止应用程序:

def thread_webAPP():
    app = Flask(__name__)

    @app.route("/")
    def nothing():
        return "Hello World!"

    app.run(debug=True, use_reloader=False)
    # hope that after app.run() is terminated, it returns here, so this thread could exit


t_webApp = threading.Thread(name='Web App', target=thread_webAPP)
t_webApp.start()

try:
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    print("exiting")
    # Here I need to kill the app.run() along with the thread_webAPP
Run Code Online (Sandbox Code Playgroud)

python multithreading kill-process flask

6
推荐指数
1
解决办法
1万
查看次数