首先,感谢您对这个伟大的网站,我通过搜索这里回答的问题找到了大量的信息.但是我有一个问题,我只发现了一个(没有答案).
我正在编写一个应用程序,它使用AudioTrack通过耳机插孔循环运行时生成的正弦波(以控制其他电子设备).它以定时间隔(使用Handler.postDelayed)执行此操作,并且它工作正常 - 除非您碰巧强制关闭应用程序.在这种情况下,即使在应用程序本身已经过去之后,正弦波仍在继续播放,而字面上我唯一能做的就是重启手机.
如果应用程序正确关闭,即使它崩溃,声音就会停止.
我试过了:
我知道在Android上使用任务杀手并不"健康",但很多人仍然这样做,而且我不希望我的用户的手机变成不可阻挡的噪音发生器,以防我的应用程序碰巧挂起并让它的屁股发出声响.
以下是生成正弦波的代码:
int bufSize = (int)(11025.0 / 60.0); // the number of samples needed for a seamless loop at 60Hz
AT = new AudioTrack(AudioManager.STREAM_MUSIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_8BIT, bufSize, AudioTrack.MODE_STATIC);
byte buffer[] = new byte[bufSize];
float angle = 0.0f;
for (int i=0; i < bufSize; i++){
buffer[i] = (byte)(Math.sin(angle) * 255);
angle += (float)(2*Math.PI) * 60 / 11025;
}
if (AT.write(buffer, 0, bufSize) != bufSize){ …Run Code Online (Sandbox Code Playgroud) 我希望能够使用 .bat 文件关闭远程计算机上的进程。例如:taskkill /im Myapp.exe
使用 taskkill 是关闭应用程序的合适方法吗?例如,单击工具栏上的“X”?
它是否给应用程序时间来运行所有关闭方法/析构函数?或者它是否会导致它突然结束,丢失在关闭之前没有机会写入的任何数据?
我正在我的应用程序中试验ActivityManager.killBackgroundProcesses,并注意到一些有趣的东西.我希望stackoverflow上的某个人可以对此有所了解.
因此,如果我启动一个应用程序,例如youtube,我首先会看到视频页面列表,然后单击menu-> Settings,我将获得设置页面.现在,如果我单击主页按钮,这将把youtube放到后台.到现在为止还挺好.现在,如果我运行ActivityManager.killBackgroundProcesses来杀死youtube应用程序(或者我使用高级任务杀手我相信使用相同的API),当我再次启动youtube时,我会看到设置页面,而不是默认的视频页面列表.
但是如果不是做ActivityManager.killBackgroundProcesses,我去系统设置 - >管理应用程序 - > Youtube->强制停止,当我再次启动youtube时,我得到视频页面列表,而不是设置页面.
因此,似乎ActivityManager.killBackgroundProcesses与强制停止不同,因为它仍然会记住它在放到后台之前所处的最后一个任务/页面,而强制停止会给你一个新的开始.
有人对此有很好的解释吗?在我的代码中是否可以执行"强制停止"以重新启动应用程序?
非常感谢!
有人可以帮我用这个命令的Linux等价物:
taskkill /F /IM myStupidProcess.exe /T
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图让Windows进程匹配某些特定条件,例如它们就像"123456.exe"并试图用tasklist杀死它们.我试图这样做:
FOR /F "usebackq tokens=2 skip=2" %i IN (`tasklist |findstr /r "[0-9].exe") DO taskkill /PID %i
Run Code Online (Sandbox Code Playgroud)
这是不对的,我不知道为什么....谁能给我一个提示?Thanx提前!
我正在尝试在我的.bashrc中创建一个函数以在gitbash中运行.我正在尝试运行的命令是:
cmd '/C TASKKILL /fi "WINDOWTITLE eq Windows Task Manager"'
Run Code Online (Sandbox Code Playgroud)
我将更改"Windows任务管理器"位,但只是为了显示我正在尝试的内容.当我通过Windows cmd运行它时,命令(TASKKILL/fi"WINDOWTITLE eq Windows任务管理器")工作正常,但是当我从gitbash运行时,我收到以下错误消息:
ERROR: Invalid argument/option - 'eq'.
Type "TASKKILL /?" for usage.
Run Code Online (Sandbox Code Playgroud)
正如我所说,它在cmd中运行良好,所以我认为它与引号有关.我也试过以下,但也失败了:
cmd "/C TASKKILL /fi \"WINDOWTITLE eq Windows Task Manager\""
Run Code Online (Sandbox Code Playgroud)
我可以将命令放在.bat文件中并运行它(cmd"/ C pathtofile/script.bat")并且这样可行,但我更愿意直接从.bashrc运行它,如果可能的话.
我有一个批处理文件,必须启动Internet Explorer并打开www.google.com.当整个页面加载完成时,它应该终止IE进程,即关闭该系统中IE的所有实例.我的批处理文件有以下两行.
iexplore.exe "www.google.com"
taskkill /IM iexplore.exe /F
Run Code Online (Sandbox Code Playgroud)
但是在加载后它没有关闭IE实例.
如果我有单独的taskkill/IM iexplore.exe/F单独的批处理文件.此批处理文件关闭IE实例.
First Batch文件出了什么问题.
PS批处理文件位于程序文件的Internet Explorer文件夹中.
我安装了一个服务/守护进程,需要在卸载和重新安装之前将其杀死.
我已经找到了如何进行卸载:
[UninstallRun]
Filename: "taskkill"; Parameters: "/im ""My Service.exe"" /f"; Flags: runhidden
Run Code Online (Sandbox Code Playgroud)
[Run]但是,该部分在安装后运行,因此我无法使用它.taskkill在安装之前使用该方法杀死进程的最佳方法是什么?
请注意,我特别想杀死这个过程.使用IPC的更复杂的解决方案在我的情况下没有任何好处,我只想taskkill在安装特定文件之前执行.
我正在创建一个命令行应用程序,它产生一个进程(由用户定义的命令,通常是一个HTTP服务器),当应用程序的工作完成时,我想让进程知道它应该终止.
在UNIX中,我可以通过发送SIGTERM来做到这一点,如果进程没有结束,那么我可以通过SIGKILL残酷杀死它.
在Windows中,我很难找到SIGTERM场景的替代方案.我学到了taskkill /PID XXXX(没有/f!),但是
taskkill /PID XXXX幕后内容的信息,因此我无法测试它.我找不到如何处理taskkill /PID XXXX进程端的任何发送.cmd.exe.我尝试在一个中运行一个简单的服务器进程cmd.exe,获取其PID并在另一个窗口中运行taskkill /PID XXXX它,但taskkill拒绝这样做:ERROR: The process with PID XXXX could not be terminated. Reason: This process can only be terminated forcefully (with /F option).所以我的问题是:如何通知Windows中的命令行进程它应该终止而不强行终止它?如何在待终止进程方面接收和处理此类消息?
过去几天我一直在编写一个脚本,我觉得这很容易,但似乎没有,我明白为什么.我的问题是如何解决它.
我需要解释的批处理脚本:
我有一个在cmd.exe中运行的脚本,它执行一些操作,例如将大量文件从一个位置移动到另一个位置.让我们来称呼它
movefile.cmd.这个脚本有效,但有时会停止(非常罕见 - 不要进入原因和脚本).这个脚本总是运行很重要,所以我的想法是创建一个退出cmd.exe然后每小时左右重新打开脚本的批处理.让我们调用这个脚本restartcmd.bat
听起来非常简单,因为我能做到这一点:
@echo off
:loop
start c:\script\movefile.cmd
Timeout /nobreak /t 3600
Taskkill cmd.exe
goto loop
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用,因为我的新脚本也在cmd.exe中运行,所以它也会杀死这个过程.
我尝试过的:
所以我制作了cmd.exe的副本并将其重命名为dontkillthis.exe.我运行dontkillthis.exe,然后从dontkillthis.exe打开restardcmd.bat - 这非常有效!但是我需要能够完成我的脚本而不是这样做.为什么?因为它应该尽可能简单,我希望我的restartcmd.bat在我的启动文件夹中.
我一直在寻找获取cmd.exe的确切进程ID并关闭它的想法,以便我的dontkillthis.exe将保留,但我似乎无法指出它.试过这里写的所有内容如何杀死除了当前正在运行的批处理文件之外的所有批处理文件,但我无法让它工作.
我不确定我是否感到困惑,或者实际上是否有点困难.
我真的很感激这里的一些帮助.
最好的祝福
MO
taskkill ×10
batch-file ×4
windows ×4
android ×2
cmd ×2
audio ×1
git-bash ×1
inno-setup ×1
kill-process ×1
linux ×1
process ×1
setting ×1
task ×1
tasklist ×1