Sunday 20 August 2017

What's different between Ctrl+Z and Ctrl+C in Unix command line?


I'm using Mac OS X Terminal. And I use Ctrl+Z or Ctrl+C to stop some programs. But I realized that I don't know what they're exactly doing. What are they and what's the difference between them?



This question was a Super User Question of the Week.
Read the March 13, 2011 blog entry for more details or submit your own Question of the Week.




Answer



Control+Z is used for suspending a process by sending it the signal SIGSTOP, which cannot be intercepted by the program. While Control+C is used to kill a process with the signal SIGINT, and can be intercepted by a program so it can clean its self up before exiting, or not exit at all.


If you suspend a process, this will show up in the shell to tell you it has been suspended:


[1]+  Stopped                 yes

However, if you kill one, you won't see any confirmation other than being dropped back to a shell prompt. When you suspend a process, you can do fancy things with it, too. For instance, running this:


fg

With a program suspended will bring it back to the foreground.


And running the command


bg

With a program suspended will allow it to run in the background (the program's output will still go to the TTY, though).


If you want to kill a suspended program, you don't have to bring it back with fg first, you can simply do the command:


kill %1

If you have multiple suspended commands, running


jobs

will list them, like this:


[1]-  Stopped                 pianobar
[2]+ Stopped yes

Using %#, where # is the job number (the one in square brackets from the jobs output) with bg, fg, or kill, can be used to do the action on that job.


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...