C shell:kill进程语法

C shell:kill进程语法,c,process,kill,C,Process,Kill,我正在尝试编写自己的C shell。我想知道如何在命令行中调用“kill”。比如说, shell> kill 2 shell: process 2 has been killed 第1行是用户输入“kill 2” 第2行是程序打印的已完成操作的消息 我知道我必须将pid作为我相信的参数,并发送SIGKILL信号。 使用类似 kill(pid, SIGKILL); 当用户在C实现中输入“kill 2”时,如何连接这个kill函数来响应?我想我很难将它连接到实现的命令行参数。

我正在尝试编写自己的C shell。我想知道如何在命令行中调用“kill”。比如说,

shell> kill 2      
shell: process 2 has been killed
第1行是用户输入“kill 2”

第2行是程序打印的已完成操作的消息

我知道我必须将pid作为我相信的参数,并发送SIGKILL信号。 使用类似

 kill(pid, SIGKILL);
当用户在C实现中输入“kill 2”时,如何连接这个kill函数来响应?我想我很难将它连接到实现的命令行参数。我可能需要strtok/atoi? 多谢各位

#包括
#include<stdio.h>
#include<sys/types.h>
#include<signal.h>

int main(int argc, char **argv)
{
    if (argc < 3)
    {
        printf("usage: ./kill OPERATION(kill/cont) PID\n");
        return -1;
    }

    if(strcmp(argv[1],"kill") == 0 )
    {
        printf("Kill:\n");
        kill(atoi(argv[2]), SIGKILL);
    }
    else  if(strcmp(argv[1],"cont") == 0)
    {
        printf("cont:\n");
        kill(atoi(argv[2]), SIGCONT);
    }
    else
    {
        printf("Kill default:\n");
        kill(atoi(argv[2]), SIGKILL);
    }

    return 0;
}
#包括 #包括 int main(int argc,字符**argv) { 如果(argc<3) { printf(“用法:./kill操作(kill/cont)PID\n”); 返回-1; } if(strcmp(argv[1],“kill”)==0) { printf(“Kill:\n”); kill(atoi(argv[2]),SIGKILL); } else if(strcmp(argv[1],“cont”)==0) { printf(“cont:\n”); kill(atoi(argv[2]),SIGCONT); } 其他的 { printf(“终止默认值:\n”); kill(atoi(argv[2]),SIGKILL); } 返回0; }
最好选择“getopt”,它可能看起来像休耕

#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <signal.h>

int pid;
if((pid = getopt(argc, argv, "0123456789")) != -1)
    if(isdigit(pid)){
        if(kill(pid, SIGKILL) == -1){
            perror("KILL:");
            exit(0);
        }
    }else{
        printf("Input format: kill <pid>");
    }
#包括
#包括
#包括
#包括
int-pid;
如果((pid=getopt(argc,argv,“0123456789”)!=-1)
if(isdigit(pid)){
if(kill(pid,SIGKILL)=-1){
佩罗尔(“杀死:”);
出口(0);
}
}否则{
printf(“输入格式:kill”);
}

谢谢。如果我尝试实现另一个调用,例如'cont',作为kill(pid,SIGCONT),会发生什么?在第一个'if'语句中,我可以执行类似if(argv[1]==kill)的操作吗?我怎样才能确保它是正确的呢?所以你需要传递额外的字段作为命令行,你想要什么意味着你需要继续或者干脆杀死它。我很快更新了我的帖子。strok里面的“0123456789”部分指的是什么?是否是流程#?对不起,前面的逻辑是“0123456789”指流程的pid。