用C程序杀死一个进程

2023-12-13

我正在编写一个程序,通过 vim 打开 .txt 文件,每当我按 CTRL+C 时,该进程就会被终止。但问题是我找不到我刚刚创建的进程的 pid 并杀死它。有谁能够帮助我?

#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

void ctrl_C(int sig){
    system("kill -9 $(pidof id)");
    printf("\n You pressed Ctrl + C,Good Bye \n");
    exit(0);    
}



int main(){
    printf("I am Programmer \n");
    pid_t id = system("gnome-terminal -- vi abcd.txt"); 
    signal(SIGINT,ctrl_C);
    while(1){}
    
}

您的代码存在多个问题:

  • system(3)不返回子进程的 PID,而是等待它退出,并返回其退出代码。您需要使用传统的 fork+exec 方法。
  • 有了子PID,调用起来更方便kill(2) than kill(1)
  • 最好加上sleep处于死循环等待输入。这会减少 CPU 负载和电费。
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

pid_t child_id;

void ctrl_C(int sig){
    kill(child_id, 9);
    printf("\n You pressed Ctrl + C,Good Bye \n");
    exit(0);    
}



int main(){
    printf("I am Programmer \n");
    pid_t child_id = fork();
    if (child_id == 0) {
        execlp("gnome-terminal", "gnome-terminal", "--", "vi", "abcd.txt", NULL);
        return 255;
    }
    signal(SIGINT,ctrl_C);
    while (1) {
        sleep(1);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用C程序杀死一个进程 的相关文章

  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 如何对多维字典中的值求和?

    通常我会使用 sum dict A values 来对字典中带有键 A 的所有值求和 然而 在这种情况下 我想要求和的不是 主 键的所有值 而是 辅助 子键 具有特定名称的所有值 让我在下面展示一个简化的例子 dict A val1 3 v
  • 如何在 SwiftUI ForEach 内容中将多个按钮操作分开?

    我有一个带有复选框 标题和计时器图标的项目列表 复选框是一个按钮 计时器图标是一个具有与其关联的独特操作的按钮 但是 如果我点击单元格内的任何位置 它会同时触发两个按钮操作 它们的目的是彼此独立运行以及单元中的水龙头独立运行 如何修改以下代
  • 使用布尔掩码有效地将 numpy 数组的元素归零

    所以我创建了一个超慢的版本 arr np arange 3 9 reshape 3 9 print arr to black np random choice a False True size 9 for i j in enumerate
  • 在python中分隔克拉A

    我有以下形式的数据 37101000ssd48800 A1420asd938987 A2011 09 10 A18 47 50 000 A99 00 A1 A0 A 37101000sd48801 A44557asd03082 A2011
  • iOS 13 - 当搜索主动推送到其他 VC 时,该 VC UITableView 会位于 Swift 4 中的导航栏下方

    我已经在 iOS 12 中检查过它工作正常 问题是当我要搜索并推送到第二个 VC 时它工作正常 当我来回推到第二个 VC 时 UITableview 就会进入导航栏下方 正常推送工作正常 仅在搜索活动并第二次推送时出现问题 我已经尝试过下面
  • Google Dataflow / Apache Beam Python - PCollection 的侧面输入会降低性能

    我们正在使用 Python SDK 在 google 数据流中运行日志文件解析作业 数据分布在数百个每日日志中 我们通过云存储中的文件模式读取这些日志 所有文件的数据量约为 5 8 GB gz 文件 总共 50 8000 万行 loglin
  • 单个脚本可以在 Windows 批处理和 Linux Bash 中运行吗?

    是否可以编写一个在 Windows 视为 bat 和 Linux 通过 Bash 中执行的脚本文件 我知道两者的基本语法 但不明白 它可能会利用一些 Bash 的晦涩语法或一些 Windows 批处理器故障 要执行的命令可能只是一行来执行其
  • 在循环 x86-64 程序集之前和内部使用 printf

    我无法弄清楚如何在此函数中正确使用 printf 因此该函数称为 multInts 应该将第一个数组的第一个元素与第二个数组的第一个元素相乘 然后继续遍历整个数组 但是 实验说明指定我不能在主函数中调用 printf 因此 我需要打印出 P
  • 摩托罗拉手机上的谷歌地图出现故障

    在摩托罗拉 Bravo 上 地图视图的左下角有一个丑陋的橙色方块 而不是谷歌徽标 我不仅在我的应用程序上注意到这一点 而且在 Yelp 上也注意到了这一点 请参阅屏幕截图 有其他人看到过这个吗 有解决方法吗 我不知道它是否发生在其他摩托罗拉
  • 连接/处理脚本到 PySimpleGUI 按钮

    你们能帮助我知道如何连接 PySimpleGui 脚本中的按钮 该按钮将在按下 单击运行按钮时执行另一个 python 脚本 现在 我一直在 GUI 脚本中阅读有关 Subprocess 和 command os popen 的内容 lay
  • 如何杀死一段时间内没有输出的进程

    我编写了一个程序 该程序应该运行很长时间 并将进度输出到stdout但是 在某些情况下 它开始挂起 最简单的方法就是重新启动它 我的问题是 有没有办法做一些事情 只有在特定秒数内没有输出时才会终止进程 我开始思考这个问题 唯一想到的就是这样
  • Symfony 2 错误:调用非对象上的成员函数 get()

    我查找了一些解决方案 但没有找到适合我的问题的解决方案 在一个控制器中我创建另一个控制器的实例 Controller1 mailController new MailController mailController gt newComme
  • 在 C++ 中将字符串转换为 int [重复]

    这个问题在这里已经有答案了 我正在尝试将从文件中读取的字符串转换为 int 值 以便可以将其存储在整数变量中 这就是我的代码的样子 ifstream sin sin open movie output txt string line get
  • 如何在空手道中为 SOAP 创建动态负载

    我使用一个变量来读取 XML 文件 然后将其分配给另一个称为有效负载的变量 将该 XML 作为 CDATA 在有效负载中传递 我的有效负载结构不会改变 我必须使用不同的 XML 文件 即不同的 CDATA 进行三到五个连续的 SOAP 调用
  • 在 Cypress 中测试我的网站时如何将数据添加到 Stripe 中

    我会尝试解释我的问题 我在网站上进行了测试 mysite com 但在注册过程中 用户应添加信用卡数据 他们可以做到https checkout stripe com pay 单击 下一步 按钮后将打开此页面 如何添加信用卡数据 谢谢 Go
  • 如何编写 C# 5 异步?

    我有以下场景 当输入命令时 为了测试 它是一个控制台应用程序 当它准备好时 我希望它将是一个WebService 我执行一些代码 当需要进一步的用户输入时 我立即返回到命令解释器 当给出新的输入时 我希望处理从我离开的地方恢复 这听起来很像
  • 创建 iruby 笔记本时内核死掉

    我对 SciRuby 完全是菜鸟 我第一次使用 SciRuby 我正在关注这个video 概述如何使用 SciRuby 并绘制图形 图表等 当我转到 localhost 8888 并从右侧下拉菜单创建新笔记本时 Ruby 2 2 3 我在
  • 是否可以在一个 JVM 中运行多个映射任务?

    我想为 Hadoop 中的映射任务共享大量内存静态数据 RAM lucene 索引 有没有办法让多个map reduce任务共享同一个JVM 作业可以通过指定作业配置mapred job reuse jvm num tasks来重用任务JV
  • 使用 mysql php pdo 从数据库返回一个值

    我不想使用循环 我只从一行的一列中获取一个值 我通过以下代码得到了我想要的 但必须有一种更简单的方法使用 PDO try conn new PDO mysql host localhost dbname advlou test advlou
  • 用C程序杀死一个进程

    我正在编写一个程序 通过 vim 打开 txt 文件 每当我按 CTRL C 时 该进程就会被终止 但问题是我找不到我刚刚创建的进程的 pid 并杀死它 有谁能够帮助我 include