- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在启动新实例之前,我必须停止较早的进程实例。为此,我需要系统调用或 C 库调用。
目前我使用“system(”killall name”)。这行得通,但我想用任何等效的 system(2)/library(3) 调用替换它。有什么选择?
同时从目录中删除文件,如“system("rm -f/opt/files*")”,备用 library(3)/system(2) 调用是什么?请注意文件名中的*,一键删除所有文件。
问候,AK
最佳答案
据我所知,没有通用的方法可以做到这一点,因为没有通用的方法可以通过进程名称获取 pid
。
你必须收集相关进程的pid
并调用int kill(pid_t pid, int signo);
函数
至少你可以尝试检查它是如何被killall
本身实现的
Ben 的链接中的一个小补充,killall
调用以下行,即通过find_pid_by_name
函数收集相关进程的pid
,实现可以找到here
pidList = find_pid_by_name(arg);
if (*pidList == 0) {
errors++;
if (!quiet)
bb_error_msg("%s: no process killed", arg);
} else {
pid_t *pl;
for (pl = pidList; *pl; pl++) {
if (*pl == pid)
continue;
if (kill(*pl, signo) == 0)
continue;
errors++;
if (!quiet)
bb_perror_msg("can't kill pid %d", (int)*pl);
}
}
关于linux - killall(1) 等效系统调用或 C 库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848533/
有时我想killall某个进程,但是运行killall却不起作用。因此,当我尝试再次启动该进程时,它失败了,因为前一个 session 仍在运行。然后我必须在上面繁琐地运行 killall -9 。所
如何列出哪些程序将被 killall 终止?在我运行之前命令? 我正在寻找 killall -dryrun java一种命令,它将列出所有将通过执行 killall java 被杀死的 java 进程
我正在开发一个运行 Python 2.7 的嵌入式 Busybox 系统。 每当我使用 杀死 Python 时 killall python 当我运行一个交互式 python shell 时,该 se
我有许多名称相似的进程,例如“proc_1asd、proc_2wqe、proc_3zxc” 我需要向他们所有人发送一个非暴力中断信号,pkill -f 可以工作,但它没有安装。 我正在尝试使用 kil
user@server:~$ ps fax | grep goh_launcher 11552 pts/2 S+ 0:00 \_ grep --color=au
killall -r -9 . 将 9 信号发送到所有匹配 . 正则表达式的进程(即它会杀死所有进程)。当它自杀时,问题是,它会最后自杀,因此按照文档中的规定去做,或者它可能会在完成工作之前自杀,让进
假设我有 2 个 docker,dockerA 和 dockerB,每个都运行一个 program1 的实例。 如果我执行 killall -9 program1在 dockerA 内部,在 dock
在启动新实例之前,我必须停止较早的进程实例。为此,我需要系统调用或 C 库调用。 目前我使用“system(”killall name”)。这行得通,但我想用任何等效的 system(2)/libra
我想执行一个killall -u(针对指定用户),但是-u 参数在RedHat 3 下不存在。是否有替代方案? 最佳答案 通过 skill -u user -c process_name 解决 谢谢安
我正在尝试在 Cocoa 应用程序中运行以下两个 bash 命令: defaults write com.apple.finder CreateDesktop false killall Finder
我正在尝试创建一个菜单栏应用程序来隐藏桌面图标和其他各种东西,主要是为了了解更多关于 Swift 的知识,但由于某种原因我无法让它工作。当我运行这个程序并单击其中一个菜单项时,没有任何反应,我在控制台
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我刚刚在 Linux 服务器上编译了 vim 7.2(在我的用户目录中,因为服务器安装了 vim 6,我想升级但没有 root 权限)。 当我输入“vim”时,它在启动时挂起而没有任何响应,但是当我从
我有一个运行 lighttpd 的实例。当我执行“ps -axc”时,该过程被列为 "614 ?? 0:00.15 lighttpd" 但是当我做“killall lighttpd”时我得到 No m
我制作了一个可以更改 OSX 垃圾箱图标的应用程序。但是,在替换 .../CoreServices/Dock.app/Resources 中的图标 .png 文件后,在垃圾桶更改状态(fx.empty
不确定标题是否正确解释了我的情况,但详细情况如下: 我正在编写一个简单的 bash 脚本来设置无线网络,使用 wlp2s0 接口(interface)。 ip route flush dev wlp2
我正在创建一个脚本,从 git 存储库中拉取一些内容。 但首先我想发送一个 SIGUSR1 到我在机器上运行的多个 Node ,一旦所有进程停止我将继续进行 git pull 基本上我会跑 killa
我有一个路由器。它总是显示以下调试消息: killall -q -USR1 udhcpd 谁能向我解释一下这里发生了什么?为什么我会收到这样的错误? 最佳答案 killall 用于按名称终止进程。它向
我正在尝试将一些关闭功能绑定(bind)到我的 nodejs 应用程序(版本 0.8.12)。由于我产生了很多子进程并在分布式环境中工作,我目前正在通过 var n = spawn('killall'
我有 K3s 集群,运行以下 pod: kube-system pod/calico-node-xxxx kube-system pod/ca
我是一名优秀的程序员,十分优秀!