如何CTRL-C

问题描述:

之前保持输入有了这个代码,我发现这里的堆栈:如何CTRL-C

... 
char buffer[256] 

while((count=read(0, buffer, 256)) > 1) 
    { 
    if(buffer[count] = '\n') break; 
    } 

    buffer[n-1] ='\0'; 

我可以从标准输入读取,但我有2个问题:

  1. 为什么'='用在if()而不是'=='
  2. 如果我在写东西后按CTRL-C,我该如何保留我写的 ?

由于

+4

使用'='而不是'=='可能是一个错字。否则就没有意义了。另外,它应该是'if(buffer [count-1] =='\ n')'。 – 2013-03-14 16:18:57

+2

这绝对不是一个错字,读取返回读取计数。而循环运行时读计数大于1。 – 2013-03-14 16:20:17

+0

@Armin:问题是关于'if'中的'=',而不是'while'。 – jxh 2013-03-14 16:58:37

为什么 '=' 在如果()而不是 '==' 使用?

在if语句中,它可能是一个错字。因为

buffer[count] = '\n' 

将始终为'\ n',并在C中它是“真”(非空)。

如果我在写完东西后按下CTRL-C,我该如何保留我写的内容?

在终端中按下CTRL-C会向运行的进程发送SIGINT。通常你的应用程序会立即退出,不管它在做什么。

你可以用some lines of code来捕捉到SIGINT事件,但是“保留你写的东西”有什么意义?

+1

'buffer [count]'也被关闭。 '^ C'通常会产生'SIGINT'。 – jxh 2013-03-14 17:02:37

+0

已将其更改为'SIGINT'。是的,'buffer [count]'似乎是一个关闭的。 – flyingOwl 2013-03-14 17:36:15

+1

“intermediately” - >“立即”? – 2013-03-14 17:38:15