首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SIGQUIT和SIGINT

使用SIGQUIT和SIGINT
EN

Stack Overflow用户
提问于 2015-05-19 16:27:42
回答 1查看 1K关注 0票数 2

我试图解决一个问题,因为我正在学习使用C中的系统调用。我使用了Ubuntu12.04 64位。

这个问题的声明说,我需要实现一个允许在其他命令(cmd1)正确结束后执行命令(Cmd1)的代码。还表示用户可以同时指定命令和用户想要的所有参数。

此时,我创建了一个小程序:

代码语言:javascript
复制
#include <syscall.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>


int main(void) 
{
    int cmd1 = system("sleep 5");


    if((cmd1 = (-1)))
    {
        write(1,"error in command 1",18);
    }
    if(cmd1=(0))
    {
        write(1, "hello world", 11);
    }
    return EXIT_SUCCESS;
}

接下来,语句指出,如果第一个命令没有正确完成,那么第二个命令就不会执行,用户还可以使用cmd1或Ctrl+4 (Ctrl+4,SIGQUIT)中止执行第二个命令(cmd2),使用Ctrl+C (SIGINT)执行第二个命令(Cmd2)。如果第二个命令被取消,第一个命令必须正常完成。

在语句的第二部分中,我遇到了一些问题,因为我从来没有在C中使用过这类东西,而且在linux中我也是新手。我试着读一些关于SIGQUIT和SIGINT的文章,但是我不明白我读过的所有内容,可能是因为我还没有学到很多关于linux的东西。

有人能帮我吗?

谢谢!

我使用if函数编辑此版本的代码。它不能正常工作,我正在寻找如何检查第一个命令是否正确完成。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 18:26:49

只是为了让你开始。让我解释一下这个问题,因为我觉得你还不明白。

这个问题的声明说,我需要实现一个允许在其他命令(cmd1)正确结束后执行命令(Cmd1)的代码。

用户cmd1cmd2将给您两个命令。应该首先执行cmd1

接下来,语句指出,如果第一个命令没有正确完成,则第二个命令将不会执行,

只有当 cmd1正常执行时才能执行cmd2

如果第二个命令被取消,第一个命令必须正常完成。

cmd1的执行不依赖于cmd2

用户可以使用cmd1或Ctrl+\ (SIGQUIT)中止执行

你看上去很困惑。在这里,它们的意思是,通过将SIGQUIT (Ctrl+\或Ctrl+4)传递给它,可以不正常地终止cmd2,在这种情况下,不应该执行cmd2。您做的是,而不是,必须对信号部分进行编码。您需要做的是,检查cmd1是如何终止的,如果它是正常的终止,则执行cmd2,否则不要执行cmd2。

备注当上面的部分发布时,问题中的代码非常不同。

这是2015年5月20日,星期三,格林尼治时间上午5:02的代码。(必须包括这一点,因为你更改代码太频繁,太多)。

代码语言:javascript
复制
int main(void) 
{
    int cmd1 = system("sleep 5");
    if((cmd1 = (-1)))
    {
        write(1,"error in command 1",18);
    }
    if(cmd1=(0))
    {
        write(1, "hello world", 11);
    }
    return EXIT_SUCCESS;
}
  1. 在这里,您使用=进行比较。=用于分配,而不是平等同情。==用于平等同情。所以,if((cmd1 = (-1)))if(cmd1=(0))应该是if((cmd1 == (-1)))if(cmd1 == (0))
  2. 您正在检查返回的值是否为-1,是否失败。这是错误的。成功的退出代码为0,因为失败是除0以外的任何值。所以,if((cmd1 = (-1)))应该是if(cmd1 != 0)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30331173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档