c - 如何在 CTRL-C 之前保持输入

标签 c unix ubuntu

使用我在 Stack 上找到的这段代码:

...
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,我怎么能保留我写的东西 写了?

谢谢

最佳答案

Why is '=' used in the if() instead of '=='?

在 if 语句中,这可能是一个拼写错误。因为

buffer[count] = '\n'

将始终为 '\n',在 C 中为“true”(非空)。

If I press CTRL-C after writing something, how can I keep what I wrote?

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

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

关于c - 如何在 CTRL-C 之前保持输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414548/

相关文章:

c - 对文件系统的性能进行基准测试

linux - 将 .so 文件插入到 unix 上的 common-auth 文件中

ubuntu apache2 mod_proxy 替换内部 url

mysql - 数据库连接失败: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

shell - 列出符号链接(symbolic link)和位置,指向特定目录

apache - 无法创建缓存目录 (/vagrant/app/cache/dev)

c - C 中的 char 是否具有预先分配的零索引值?

c - ANSI C : Error checking user input with a function

c - 使用指向字符串的指针解析字符串而不使用 strdup 和 strtok 函数

python - 如何在第一次调用 paramiko 命令时设置密码?