您好,您说的是哪个方法呀,我并没有找到
你看WeChat的pid变没有, 变了就是被SB重启了
执行前
zyhyueyu1090-1:~ root# ps -e | grep WeChat
691 ?? 0:03.37 /var/mobile/Containers/Bundle/Application/32093D5D-DBB2-4489-8067-8B436C360169/WeChat.app/WeChat
747 ttys000 0:00.01 grep WeChat
执行打印
: pid=745,child pid = 748 ,result = 0
执行后
691 ?? 0:03.37 /var/mobile/Containers/Bundle/Application/32093D5D-DBB2-4489-8067-8B436C360169/WeChat.app/WeChat
750 ttys000 0:00.01 grep WeChat
(并且,如果执行前 在微信里打开一个聊天页面,执行后再打开微信 还是会在聊天页面,这也会是SB重启的吗?)
int result = posix_spawn(&pid,"/bin/kill",&fact,&attr,args,environ);
char cmd[]="killall";
char opt[]="-9";
char opt2[]="WeChat";
char *args[4];
args[0]=cmd;
args[1]=opt;
args[2]=opt2;
args[3]=NULL;
kill怎么跟killall混一起用?
https://stackoverflow.com/questions/19546756/starting-a-process-using-posix-spawn
你先找个例子好好看看吧
谢谢了 ,bin里面只有kill,没有killall,所以之前我就改成killall了,现在 换成kill,然后遍历所有进程找出想要的kill掉,然后被SB重启了,虽然也达到了效果,但是有没有更好的方法
如果你想重启的话 posix_spawn 就可以直接实现,直接执行kill,SB 会自动重启这个应用,我是用微信试的,
6s:~ root# which killall
/usr/bin/killall
…
3Q,非常感谢!
哈喽 还在吗? 您说SpringBoard里的哪个方法呀
原来是这样用的 非常感谢您
#include <spawn.h>
int killWeChat() {
posix_spawnattr_t attr;
posix_spawn_file_actions_t fact;
pid_t pid;
char cmd[] = "killall";
char opt[] = "-9";
char opt2[] = "WeChat";
char *args[4];
args[0] = cmd;
args[1] = opt;
args[2] = opt2;
args[3] = NULL;
posix_spawnattr_init(&attr);
posix_spawn_file_actions_init(&fact);
int result = posix_spawn(&pid, "/usr/bin/killall", &fact, &attr, args, NULL);
NSLog(@"pid=%d,child pid = %d ,result = %d\n", getpid(), pid, result);
int state = 0;
waitpid(pid, &state, 0);
NSLog(@"stat is %d\n", state);
return 0;
}
整个方法可以这样写,希望对其他人能有帮助
为什么都写这么复杂
#include <spawn.h>
int killWeChat() {
pid_t pid;
const char *args[] =
{
"/usr/bin/killall",
"-9",
"WeChat",
NULL
};
int result = posix_spawn(&pid, "/usr/bin/killall", NULL, NULL, args, NULL);
NSLog(@"pid=%d,child pid = %d ,result = %d\n", getpid(), pid, result);
int state = 0;
waitpid(pid, &state, 0);
NSLog(@"stat is %d\n", state);
return 0;
}
我上面代码都给了
spawn("/usr/bin/killall", "/usr/bin/killall", "-9", "WeChat", NULL);
不就行了吗
主要还是C用的太少了,我会努力的
尴尬了 spawn() 不再 <spawn.h> 中
有没有找到直接关闭的方法
用楼上的方法可以直接关闭