|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2149
|
[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 16: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: 2149
|
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: 20:54.