2017-01-08 5 views
-1

Ich bin auf der Suche nach einer Möglichkeit, Argumente als String an die Funktion töten in C (Mann 2 töten) übergeben, da das Signal vom Betriebssystem abhängt. Der User legt also fest, was das Programm senden soll (zB SIGUSR1, ..) und ich möchte es einreichen. Durch töten (pid, USR_INPUT);Übergeben String-Argumente zu töten() in C

Mein Fehler

Invalid Argument 

Wo ich es verwenden:

kill(pid,name); 

Vielen Dank

+0

Sie können nicht. Die 'kill'-Funktion unterstützt einfach nicht, es so zu nennen. Du liest die Manpage, also solltest du das schon wissen. Warum solltest du ignorieren, was auf der Manpage steht, dass der zweite Parameter sein muss? – kaylum

+0

also muss ich dies für jeden os implementieren. Das scheint falsch zu sein –

+0

@PeterNeuman Wenn man bedenkt, dass 'kill()' * sich selbst * nicht C ist, sondern POSIX, sehe ich nicht, wie man erwarten kann, dass dies "auf jedem os" funktioniert. – EOF

Antwort

0

Es ist einfach nicht möglich.

kill(2) akzeptiert keine Zeichenfolge (zweites Argument) für das Signal. Es klingt ein bisschen zweifelhaft, dass man Signale verarbeiten musste, die als Strings eingegeben wurden. Wenn Sie dies wirklich tun müssen, können Sie Ihre Zeichenketteneingabe in eine Ganzzahlform umwandeln, indem Sie sie mit der Liste der Signale vergleichen, an denen Sie interessiert sind:

if (strcmp(sig_str, "SIGINT") == 0) { 
    sig_num = SIGINT; 
} else if (sig_str, "SIGTERM") == 0) { 
    sig_num = SIGTERM; 
} else if ... 

... 

kill(pid, sig_num); 
+0

okay, es wurde repariert, wenn ich schreibe int Signal = SIGUSR1 und nicht char * Signal = SIGUSR; –