Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the differences between kill process and close process?

Tags:

c#

process

When I start a process and want to close this process, what are the differences between Process.Close() and Process.Kill()?

I asked because I have an application which starts to capture packet using Wireshark with a command via command line with Windows = hidden. so when I want to stop the capturing I kill the process .So sometimes the capture opens with an error that the last packet was cut in the middle so I am wondering can using close() before kill() will solve this issue ?

When I start capturing I can close it by pressing Ctrl + C but in my case I open the window in hidden state, Can I do something similar via my code ?

like image 516
user1710944 Avatar asked Dec 19 '12 12:12

user1710944


People also ask

What is the difference between kill process?

Killing a process using kill will not have any side effects like unreleased memory because it was gracefully killed. Kill -9 works similarly but it doesn't wait for the program to gracefully die. Kill -9 generates a SIGKILL signal which won't check the state of the process and kills the process immediately.

What is difference between kill and terminate process?

The difference between kill and terminate is that kill generally refers specifically to sending a signal, whereas terminate usually also includes other methods such as sending the process a command that tells it to exit (if the process includes a command interpreter of some kind).

What is in kill process?

The kill command sends a signal (by default, the SIGTERM signal) to a running process. This default action normally stops processes. If you want to stop a process, specify the process ID (PID) in the ProcessID variable.

What does it mean to kill a process tree?

If you select the process at the top of the tree you want kill, then press F9 followed by Enter it will close the process and the entire process tree in one go. In the screen shot below this action would cause Chrome and all sub process to be closed.


2 Answers

What are the differences between Process.Close() and process.Kill()?

The manual is pretty clear on that:

Process.Close():

The Close method causes the process to stop waiting for exit if it was waiting, closes the process handle, and clears process-specific properties. Close does not close the standard output, input, and error readers and writers in case they are being referenced externally. [i.e. the process itself keeps running, you just cannot control it anymore using your Process instance]

Process.Kill():

Kill forces a termination of the process, while CloseMainWindow only requests a termination. [...] The request to exit the process by calling CloseMainWindow does not force the application to quit. The application can ask for user verification before quitting, or it can refuse to quit. To force the application to quit, use the Kill method. The behavior of CloseMainWindow is identical to that of a user closing an application's main window using the system menu. Therefore, the request to exit the process by closing the main window does not force the application to quit immediately.

Process.CloseMainWindow:

Closes a process that has a user interface by sending a close message to its main window.


As for your edit:

i asked because i have application who start to capture packet using wireshark with command via command line with Windows = hidden.

Use the WinPcap API or the Pcap.Net library for that, not Wireshark.

like image 198
CodeCaster Avatar answered Oct 04 '22 16:10

CodeCaster


Kill asks the system to unceremoniously terminate the process (via a call to the Windows TerminateProcess system call). This is akin to End Process in Task Manager.

Close closes the handle to the process in .NET, but does not actually touch the process itself. Close is also called by Dispose. See this answer by Jon Skeet.

A third option is CloseMainWindow, which does gracefully shut down the program by asking the primary window to close. This is akin to right-clicking the program on the task bar and choosing Close.

like image 34
David Pfeffer Avatar answered Oct 04 '22 16:10

David Pfeffer