Articles of 进程

如何在Android上执行“help”Linux命令?

我想运行一个像am -help的命令并获取该命令的使用信息。 但是, -help参数在进程运行时似乎不起作用。 如何使这项工作? cmd1[0] = "/system/bin/sh"; cmd1[1] = "-c"; cmd1[2] = "/system/bin/am -help" //I want to do sth like this Process process = Runtime.getRuntime().exec(cmd1); 该命令在没有-help情况下工作。 有什么方法获得Android Shell命令的使用信息和/或语法? 请注意,如果我不发送am -help并只发送命令,那么它会自动返回该命令的使用信息。 有什么办法可以用其他方式调用这个响应吗?

从命令行中删除持续的僵尸进程

我经常跑adb,有时会停止工作。 $ ps aux user1 4175 0.0 0.0 0 0 ? Zl Feb27 0:03 [adb] <defunct> 这僵尸进程停止adb工作,我不能让亚行再次工作,而无需重新启动计算机。 我试过发送 kill 4175 kill -9 4175 kill-17 4175 但没有“收获”的僵尸进程。 如何在不重新启动计算机的情况下再次运行adb? 另外,我正在使用: Linux user1 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:12:07 UTC 2012 x86_64 GNU/Linux

分叉进程的零星堆栈指针分段错误

我正试图debugging一个在一段时间内分段错误访问堆栈指针的进程。 在main()的第一行之前用于segfault的过程{现在segfault移到了另一个地方。 如果它没有崩溃,那么这个过程将继续无限期地正确运行。 我猜测这与进程被实例化的方式有关: pid_t COsAbstraction::Start(const uint32_t coreId, const char* argv[]) { pid_t pid; sigset_t mask; sigset_t save; /* * Block SIGCHLD */ sigemptyset(&mask); sigaddset(&mask, SIGCHLD); pthread_sigmask(SIG_BLOCK, &mask, &save); pid = fork(); if(pid < 0) { _exit(false); } if (pid != 0) { // I am the parent pthread_sigmask(SIG_UNBLOCK, &save, NULL); return pid;; } // […]

提高进程(linux)chrt的所有线程的优先级/调度策略?

我想在特定的外部进程的所有线程上设置SCHED_RR(和优先级)。 最好的办法是从shell和另外一个案例中做到这一点 – 从小时候创build它的过程中编程地从另一个过程中执行。 谢谢! 我吮吸shell脚本,并不知道如何为一个进程的所有线程运行“chrt”,以防万一,线程有不同的名字。

C ++进程pipe理:Linux中的WinAPI“SetProcessShutdownParameters”?

在Windows(7)中,在VC ++中,我们可以设置“进程closures参数”(在XP中父进程会在subprocess之前自动closures),以确保父进程在subprocess之前被终止,如下所示: GetProcessShutdownParameters(&shutdownlevel, &shutdownflags); SetProcessShutdownParameters(shutdownlevel+1, SHUTDOWN_NORETRY); 如何在Linux上使用C ++(gcc)? 在许多论坛中,我发现如何确保subprocess死亡,以防父进程死亡(例如,在Linux上使用prctl),但是我没有发现如何保证父进程被OS终止在subprocess之前,就像上面的Windows一样。 也许它在Linux中是自动的?

控制另一个进程的内存映射

在某种程度上可以改变Linux中另一个进程的内存映射吗? 相反,也就是说,只能通过在调用mmap的进程中运行的代码来控制它。 我问的原因是因为我想能够build立一个非常自定义的内存映射的进程,而不能使用共享库甚至是VDSO,我没有看到任何方式来做到这一点这个过程本身并不涉及基本写自己的libc来处理系统调用等等。 (即使我是静态链接libc ,是不是会尝试使用vDSO?)

查看Tomcatsubprocess的详细信息

我有一个与.war一起部署到tomcat的应用程序。 我得到了一些关于这个应用程序的CPU消费问题,我想看看它的一些细节。 但是当我跑到顶端,我只是得到这样的东西: PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND 2310 app1 20 0 11.1g 1.4g 11m S 191.3 14.5 31:32.67 java 21根20 0 0 0 0 S 11.7 0.0 0:29.89 ksoftirqd / 4 3387 xymon 20 0 15156 1176 792 R 2.0 0.0 0:00.01 top 1 root 20 0 19352 1528 1212 […]

在Linux中,我怎么才能等到一个没有开始的过程呢?

我有一个监控程序,我想检查系统中的各种进程,并知道何时终止。 我也想知道他们的退出代码,以防万一他们崩溃。 但是,我的程序不是要监视的进程的父项。 在Windows中,这很简单: OpenProcess用于SYNCHRONIZE权限, WaitForMultipleObjectsEx等待它们中的任何一个终止,然后GetExitCodeProcess找出为什么它终止(如果原因是exception,则带有NTSTATUS错误代码)。 但在Linux中,相当于这些, waitpid ,只能在你自己的subprocess上工作,而不是无关的进程。 我们尝试了ptrace ,但是这引起了它自己的问题,比如大大减缓了信号处理。 此程序旨在以root身份运行。 有没有一种方法来实现这一点,除了只是轮询/proc/12345直到它消失?

NodeJSsubprocess在SIGINT上终止

我创buildNodeJS应用程序,创build了不lesssubprocess。 它们由spawn和exec (基于lib实现)启动。 一些示例可以是用于图像操纵的GraphicsMagick( gm )或用于OCR的Tesseract( node-tesseract )。 现在我想优雅地结束我的应用程序,所以我创build了closures挂钩: function exitHandler() { killer.waitForShutdown().then(function(){ logger.logInfo("Exited successfully."); process.exit(); }).catch(function(err) { logger.logError(err, "Error during server shutdown."); process.exit(); }); } process.on('exit', exitHandler); process.on('SIGINT', exitHandler); process.on('SIGTERM', exitHandler); 退出处理本身工作正常,它正在等待等,但有一个捕获。 当时运行的所有“本地”(gm,tesseract,…)进程也被杀死。 exception消息只包含“命令失败”,然后是失败的命令的内容,例如 "Command failed: /bin/sh -c tesseract tempfiles/W1KwFSdz7MKdJQQnUifQFKdfTRDvBF4VkdJgEvxZGITng7JZWcyPYw6imrw8JFVv/ocr_0.png /tmp/node-tesseract-49073e55-0ef6-482d-8e73-1d70161ce91a -l eng -psm 3\nTesseract Open Source OCR Engine v3.03 with Leptonica" 所以至less对我来说,他们没有说任何有用的东西。 我也在排队进程执行,所以PC不会一次超过50个进程。 […]

如何可靠地跟踪POSIX系统上的子/孙进程?

我有一个有趣的(至less对我来说)问题:在某些情况下,我无法设法find一种可靠,便携地获取有关孙辈过程的信息。 我有一个应用程序, AllTray ,我试图去在某些奇怪的情况下工作,其subprocess产生一个孩子,然后死亡。 AllTray的工作基本上是将应用程序停靠在任务托盘上,这个任务托盘(通常)被指定为AllTray要调用的命令行(即, alltray xterm将启动xterm,并在AllTray中进行pipe理)。 大多数GUI软件在它下面运行得很好。 它在其窗口(或一个小部件库)上设置_NET_WM_PID属性,一切正常,因为_NET_WM_PID == fork() ed子。 但是,在某些情况下(比如运行oowriter ,或者在KDE下运行的软件,如K3b),AllTray运行的subprocess就是一个包装器,不pipe是OO.o的shell脚本还是一个奇怪的程序fork() s和exec()本身就是有效的背景,因为父进程很早就死掉了。 我的想法是不收获我的subprocess,以便在进程表中保留我的孙辈的父进程ID,以便我可以通过从下到上遍历家族树来将它们链接回我。 然而,这并不奏效,一旦我的subprocess死亡并变成僵尸,系统会认为我的孙subprocess是一个孤儿, init采用它。 至less在Linux 2.6和NetBSD上,这似乎是这种情况; 我认为这可能是规范,POSIX似乎并没有明确说明情况,所以我希望相反。 由于这种方法是行不通的,我想过使用LD_PRELOAD并拦截我的subprocess调用fork() ,并将信息传回给我的父进程。 但是,我担心这不会像理想的解决scheme那样便于携带,因为不同的系统对dynamic链接程序如何执行LD_PRELOAD有不同的规则。 它不适用于setuid / setgid GUI应用程序,至less在Linux系统上,辅助函数库也不是setuid或setgid。 一般来说,这对我来说是一个不好的主意,而且感觉很不好。 所以,我希望有人对如何做到这一点有一个想法,或者如果像LD_PRELOAD这样的机制的想法真的是我没有补丁内核(这不会发生)的唯一select。