5

嗨,我必须为系统调用编写 2 个函数,这些函数将管理操作系统中任务的执行。我找不到暂停/重新启动进程的方法。我找到了一个信号列表,我知道 kill 函数,这是我的代码:

#include <stdlib.h>
#include <signal.h>

typedef struct File
{
  int pid;
  struct File *pids;
} *file;

file file1 = NULL;

//this fonction is to suspend a process using its pid number
int V(int pid_num)
{
  //does the kill fonction just kill the process or will it take into account the signal argument?
  kill(pid_num, SIGSTOP);
  file1 = ajouter(file1, pid_num);
  return 0;
}

//this is to restart the process
int C()
{
  if (file1 != NULL)
  {
    //I know the kill fonction is not the right one but I just don't know any other to take as argument the pid of a process to restart it
    kill(file1->pid, SIGCONT);
  }
  return 0;
}

//this fontion adds pid number to our structure
file ajouter(file file_n, int pid)
{
  file nouveau = malloc(sizeof(file));
  nouveau->pid = pid;
  nouveau->pids = file_n;
  return nouveau;
}

备注:此代码不应该真正工作它只是一个小模拟提前非常感谢

4

2 回答 2

10

发送一个进程SIGSTOP来暂停它并SIGCONT恢复它。

这些信号用于实现 shell 作业控制,因此它们不能被捕获、阻止或忽略(否则应用程序可能会违反作业控制)。

于 2012-02-15T16:18:56.407 回答
1

kill不仅会“杀死”您提供其 ID 的进程。它发送你给它的信号。

于 2012-02-15T16:23:57.130 回答