我希望看到一个程序在断开连接时如何响应.除了禁用网卡之外,有没有办法在Windows中切断tcp连接而不会终止进程,或者拥有连接的线程?
如何从Unix获取所有正在运行的进程的进程列表,包含命令/进程名称和进程ID,因此我可以过滤和终止进程.
我正在寻找最好的,或任何方式真正从后台启动PHP的过程,所以我可以在以后的脚本中杀死它.
现在,我正在使用:shell_exec($ Command); 这个问题是它等待程序关闭.
当我执行shell命令时,我想要一些与nohup具有相同效果的东西.这将允许我在后台运行该过程,以便稍后在脚本中可以关闭它.我需要关闭它,因为此脚本将定期运行,并且程序运行时无法打开.
我曾想过生成一个.bat文件来在后台运行命令,但即便如此,我如何在以后杀死该进程?
我见过的linux代码是:
$PID = shell_exec("nohup $Command > /dev/null & echo $!");
// Later on to kill it
exec("kill -KILL $PID");
Run Code Online (Sandbox Code Playgroud)
编辑:结果我不需要杀死进程
我想使用子进程来运行程序,我需要限制执行时间.例如,如果运行时间超过2秒,我想杀死它.
对于常见程序,kill()运行良好.但是,如果我尝试运行/usr/bin/time something,kill()不能真正杀死该程序.
我的下面的代码似乎不能很好地工作.该程序仍在运行.
import subprocess
import time
exec_proc = subprocess.Popen("/usr/bin/time -f \"%e\\n%M\" ./son > /dev/null", stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
max_time = 1
cur_time = 0.0
return_code = 0
while cur_time <= max_time:
if exec_proc.poll() != None:
return_code = exec_proc.poll()
break
time.sleep(0.1)
cur_time += 0.1
if cur_time > max_time:
exec_proc.kill()
Run Code Online (Sandbox Code Playgroud) 我正在用popen()打开一个长期运行的进程.对于调试,我想在完成之前终止该过程.调用pclose()只会阻塞直到孩子完成.
我怎么能杀死这个过程?我没有看到任何简单的方法来从popen()返回的资源中获取pid,以便我可以向它发送信号.
我想我可以做一些kludgey并尝试使用某种命令行hackery将pid捏到输出中...
我的应用运行地理定位服务,用户可以通过toggleButton激活或停用.要检查服务的状态,我在共享首选项中写了一个布尔值.由于我的服务的onDestroy(),我听服务的开始和结束.
我的问题是:当用户使用"高级任务杀手"杀死服务时,我不知道服务被杀死了,onDestroy没有被调用!
我该怎么处理?
谢谢你的帮助.
弗洛朗
我的应用程序正在使用正在进行的通知.我注意到当我通过DDMS终止我的应用程序时,不会取消正在进行的通知.但是,当我在进行Eclipse→Run时,该进程被终止并且通知被取消.
当Android系统决定杀死我的应用程序时会发生什么?通知是否被取消或Android是否只是在不进行任何清理的情况下终止进程?
编辑:
如果有一些清理完成,我怎么能模拟这种行为,以测试我的应用程序是否正常运行?
如果一个进程当前由于SIGTRAP信号而停止,并且它通过kill()发送了一个SIGSTOP信号,那么默认行为是什么?SIGSTOP是否会在该过程再次继续后交付的待处理信号?或者它会被丢弃/忽略?
如果SIGSTOP排队,是否有任何方法可以从该进程外部将其从队列中删除,例如在跟踪过程中?
以前有人遇到过这种情况吗?我强制在Android设备的设置对话框中停止应用.但是当我使用ps命令时adb它仍然显示在屏幕上.但这个过程不可能得到activityManager.getRunningAppProcesses().这个过程甚至在我卸载这个应用程序后都存在,它发生在随机.
因为我在我的应用程序中打开了一个端口ServerSocket,所以在我停止我的应用程序后无法释放该端口.下次我尝试打开我的应用时,它再次无法使用此端口.
我使用的是华硕EeePad,这个问题似乎只发生在该设备上.
顺便说一下,任何第三方工具(如流程管理器)都无法获取该流程.但它真的存在于pid我使用psvia adb shell列出所有进程的时候.
我尝试开发使用手机加速度计的Android应用程序.它可以在除华为手机之外的任何地方工作(在P9上测试).我选中了"继续使用黑屏运行"选项并使用省电模式保护应用程序(电池选项).
我看不到解决方案,所以我问你:-)这是我的活动:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private MyService mService;
private boolean mIsRunning;
private MyService.ICallback mCallback = new MyService.ICallback() {
public void changed() {
Log.i(TAG, "CHANGED");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
if(!mIsRunning) {
startStepService();
}
bindStepService();
}
@Override
protected void onPause() {
super.onPause();
if(mIsRunning && mService != null) {
unbindStepService();
}
}
private ServiceConnection mConnection = new ServiceConnection() {
public …Run Code Online (Sandbox Code Playgroud) kill ×10
android ×4
php ×2
python ×2
windows ×2
background ×1
c ×1
connection ×1
geolocation ×1
huawei ×1
linux ×1
nohup ×1
ondestroy ×1
popen ×1
posix ×1
process ×1
processlist ×1
ps ×1
signals ×1
subprocess ×1
task ×1
tcp ×1
unix ×1