how to suspend/restart processes in C (linux)
16,283
Solution 1
kill
will not just 'kill' the process whose ID you gave it. It sends the signal you give it.
Solution 2
Send a process SIGSTOP
to pause it and SIGCONT
to resume it.
These signals are used to implement shell job control and because of that they can't be caught, blocked or ignored (otherwise an application could defy job control).
Comments
-
vallllll almost 2 years
Hi I have to write 2 fonctions for system calls that will manage the execution of task in an operating system. I couldn't find a way to suspend/restart processes. I have found a list of signals and I know the kill function and here is my code:
#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; }
remark: this code is not supposed to really work it's just a little simulation thanks a lot in advance