我试图在Emacs中找到一个钩子,它应该在emacs服务器正常关闭之前启动.我尝试使用elisp之类的kill-emacs-query-functions,kill-emacs-hook,server-done-hook:
(add-hook 'server-done-hook
'(lambda ()
(savehist-save)
)
)
Run Code Online (Sandbox Code Playgroud)
...但是当操作系统关闭时,它们都不会被调用,因此不会保存历史记录.
也许有人可以暗示一下?
PS我在Gentoo Linux上,emacs-vcs-23.2.9999包,仅限终端.为了测试所需的行为,使用start-stop-daemon实用程序停止Emacs.
我需要创建一个从用户获取以下内容的脚本:
1)进程名称(在linux上).
2)此进程写入的日志文件名.
它需要终止进程并验证进程是否已关闭.使用时间和日期将日志文件名更改为新文件名.然后再次运行该过程,验证它是否正常,以便它将继续写入日志文件.
在此先感谢您的帮助.
我想杀死在android中运行的所有任务,比如任务杀手......到目前为止,我所做的是:
ActivityManager manager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> activityes = ((ActivityManager) manager).getRunningAppProcesses();
for (int i = 0; i < activityes.size(); i++){
Log.e("APP: "+i, activityes.get(0).processName);
if (!activityes.get(0).processName.equals("app.android.myapp")){
Process.killProcess(activityes.get(0).pid);
}
}
Run Code Online (Sandbox Code Playgroud)
代码的问题是它只在我的应用程序的活动列表中返回了12次.没有任务被杀死......
有人可以帮帮我吗?谢谢!
最近,来自同一家公司的两个软件用户开始体验随机关闭(没有错误消息,崩溃对话框,退出对话框等).我们能够将这两个系统的共同点分离到特定的软件(移动宽带设备管理器).当该软件运行时,我们的软件会在约2分钟的时间内随机关闭.如果我们退出宽带管理器,我们的软件将无限期地运行而不会出现问题.
我无法想到为什么我们的软件和他们的软件之间会有任何互动.我们的软件无法访问网络,宽带调制解调器甚至无法插入.
我们为客户提供了一个解决方案(以管理员身份运行我们的软件或在运行我们的软件之前退出移动宽带管理器)但我们希望解决问题,这样他们就不必担心做这些事情.
我在我们的软件上附加了一个远程调试器,但我不确定在哪里查看我们的软件究竟是如何死亡的.当我们的进程结束时,调试只以退出代码0结束.
我的问题是,如何调查Win32进程如何/为何被杀死,以及如何防止它发生?
编辑:我在十六进制编辑器中打开了宽带管理器及其使用的DLL,并引用了一个与我们完全相同的可执行文件.所以我猜这就是链接.重命名我们的可执行文件修复了我们用户的问题,但不幸的是,Sprint SmartView的愚蠢.
编辑:帮助罕见的其他开发人员点击:如果您的可执行文件已命名,phoenix.exe并且您的最终用户正在运行Sprint SmartView,那么这就是您的程序随机死亡的原因.重命名您的可执行文件将解决此问题(或者花费几个月的时间来确定在Sprint中通知谁以使其真正得到解决).phoenix.exe具体提到的文件是WwanCoreSdk.dll.
从精细的手册页:
Run Code Online (Sandbox Code Playgroud)kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ... kill -l [sigspec | exit_status] Send the signal named by sigspec or signum to the processes named by pid or jobspec. sigspec is etc. etc....
那么是什么决定是否kill 1杀死init进程或jobspec 1?
我正在尝试遵循本手册,其中包含以下说明:
restart taskgated service by killing the current running taskgated process
Run Code Online (Sandbox Code Playgroud)
怎么做?我试图找到taskgated并只得到一些ttys007,但没有任务门控过程:
$ ps | grep taskgated
66942 ttys007 0:00.00 grep --exclude-dir=.svn taskgated
$lsof | grep taskgated
$
Run Code Online (Sandbox Code Playgroud) 我想创建一个与父进程分离的子进程,这样如果父进程退出,子进程将继续。我正在 Windows 上工作并执行了以下操作:
if(CreateProcess(program, arguments, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NO_WINDOW | DETACHED_PROCESS, NULL, NULL, &sinfo, &pinfo))
{
CloseHandle(pinfo.hProcess);
CloseHandle(pinfo.hThread);
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,父进程继续运行,而子进程在后台执行。如果我在终端中按 Ctrl-C 来终止父进程,则子进程将按预期继续执行。但是,如果我在 Window 的任务管理器中杀死父进程,则子进程也会被杀死。
为什么Ctrl-C和任务管理器中的查杀有区别?即使父级在任务管理器中被杀死,有什么方法可以确保子级继续运行?
我试图找出为什么这不起作用:
\n\n#!/bin/bash\n\nsudo sleep 60 &\nsudo_pid=$!\nsudo kill $sudo_pid\nRun Code Online (Sandbox Code Playgroud)\n\n我希望在之后kill,sudo命令及其子sleep进程将被终止,但它们没有,如以下脚本所示:
#!/bin/bash\n\nsudo sleep 60 &\nsudo_pid=$!\nsudo kill $sudo_pid\n\nif ps -p $sudo_pid > /dev/null; then\n sudo kill $sudo_pid\nelse\n echo "No sudo process running"\n exit 1\nfi\n\nif ps -p $sudo_pid > /dev/null; then\n echo "sudo (pid $sudo_pid) is still running"\n ps -F $sudo_pid\nelse\n echo "sudo successfully killed"\nfi\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行它时会产生以下输出(带有sudo缓存的信用):
jon@ubuntu:~$ ./so.sh \nsudo (pid 46199) is still running\nUID PID PPID C SZ RSS PSR STIME TTY …Run Code Online (Sandbox Code Playgroud) 我实际上知道这个实现:Flutter 以编程方式关闭应用程序,但是当应用程序关闭时仍然在后台。我怎样才能完全杀死应用程序而不让它在后台?
谢谢!