Ich habe einen Bereinigungsvorgang, der den Prozess beenden muss, dessen PID als Argument übergeben wird.Wie einen Prozess in C zu töten, wenn pid ist, wissen
Ich kann sehr gut die kill(pid_t, SIGKILL)
verwenden, um es zu töten. Allerdings ist die PID, die ich bekomme, ein ganzzahliger Wert. Also kann ich kein pid_t daraus machen. Gibt es eine Möglichkeit zu verwenden und Ganzzahl-PID, um den Prozess zu beenden?
Gut. Ich kann sehr gut verwenden system("kill -9 <pid>");
ich für eine Lösung von C.
'pid_t' ist ein vorzeichenbehafteter Integer-Typ, daher ist es sicher gültig, pids in' intmax_t' zu speichern. In der Praxis ist es in Ordnung, sie auch in "int" zu speichern. Es ist wahrscheinlich, dass "pid_t" nur erfunden wurde, weil einige hässliche Legacy-Systeme "short" für pids verwendeten, während neuere Systeme "int" verwenden wollten und daher "pid_t" für die Verwendung in den Prototypen erfunden wurde System könnte "pid_t" als "short" oder "int" (oder, was auch immer, etwas anderes) wie gewünscht definieren. –
Soweit ich weiß, gibt es keine Anforderung, dass 'pid_t' ein vorzeichenbehafteter Integer-Typ ist. (Haben Sie ein Zitat?) Es ist nur erforderlich, dass '(pid_t) -1' und' (pid_t) 0' funktionieren und sich nicht mit legitimen PIDs überschneiden. Dies kann sicherlich mit unsigned Integer-Typen geschehen (wie viele Systeme mit "time_t"), und es funktioniert sicherlich auch mit Gleitkommatypen. –
"blksize_t, pid_t und ssize_t müssen Integer-Typen mit Vorzeichen sein." Quelle: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html –