gpt4 book ai didi

linux - killall(1) 等效系统调用或 C 库调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:34 24 4
gpt4 key购买 nike

在启动新实例之前,我必须停止较早的进程实例。为此,我需要系统调用或 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com