|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2160
|
[C] Segmentation Error
Sto facendo un progettino per l'università, in pratica l'ho finito. Una mini shell.
Ho implementato un comando KILL che va a terminare un processo usando il pid_number. Il problema che riscontro, è quando scrivo kill <pidNumber> la shell mi da "segmentation error" e torna alla bash di sistema. Il codice per eseguire questo comando mi sembra semplice: Codice:
void killJob(int jobId)
{
t_job *job = getJob(jobId, BY_JOB_ID); // get the job from the list
kill(job->pid, SIGKILL); // send the job a SIGKILL signal
}
...
...
...
if (strcmp("kill", commandArgv[0]) == 0) {
if (commandArgv[1] == NULL)
return 0;
killJob(atoi(commandArgv[1]));
return 1;
}
EDIT: Ho fatto qualche prova e ho constatato che il problema sta nel Codice:
kill(job->pid, SIGKILL);
__________________
Vendo...nulla. Cerco...la felicità. Ultima modifica di Emaborsa : 19-01-2011 alle 17:21. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Ciao.
Probabilmente il problema è nella funzione getJob che forse torna un puntatore nullo, e quando fai job->pid hai un accesso illegale e viene l'errore di segmentazione. Quindi controlla getJob. Ti consiglierei anche di inserire un if per vedere se job è diverso da 0, e solo in caso affermativo fare il kill. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2160
|
Grazie per la risposta.
Comunque ho risolto.... ero io che sbagliavo
__________________
Vendo...nulla. Cerco...la felicità. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:59.





















