【发布时间】:2015-09-29 07:50:04
【问题描述】:
我正在用 C 语言开发我的应用程序,当应用程序启动时,它需要终止从系统启动时运行的 shell 脚本。
这是我从 C++ 中杀死 shell 脚本的函数:
void Kill_Script_sh(void)
{
FILE *fp;
char buffer[30];
char pid_number[5];
int pid;
int fd;
std::stringstream command;
command.str("");
fp = popen("ps aux | grep tick.sh", "r");
fgets(buffer, 30, fp);
pclose(fp);
pid_number[0] = buffer[11];
pid_number[1] = buffer[12];
pid_number[2] = buffer[13];
pid_number[3] = buffer[14];
pid_number[4] = buffer[15];
pid = atoi(pid_number);
printf("%d \n", pid);
command << "sudo kill " << pid;
system(command.str().c_str());
}
杀死进程后,我需要检查它是否仍然存在。这是做我需要的正确方法吗?任何想法都是有帮助的。谢谢
【问题讨论】:
-
那不是 C,那是 C++。
-
你试过你的
ps命令行了吗?很有可能您的grep也匹配,导致您杀死grep而不是脚本。 -
@molbdnilo 它是混合的。
-
@Zola 没有这样的东西。这是一个或另一个。
-
@molbdnilo 有,因为这是嵌入式系统的应用,用g++编译,一切正常。