【问题标题】:Difference between user input and write(0, input, strlen(input))用户输入和写入的区别(0, input, strlen(input))
【发布时间】:2020-03-21 14:40:15
【问题描述】:

我在主阅读循环中获得用户输入,如果按下 ctrl-c,我想获得自定义输入。 但似乎用户输入与使用write(0, foo, strlen(foo);在标准输入中写入的某些字符串之间存在差异。

这是一个小程序,显示:

#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>

void ctrlc_handler(int signal)
{
    write(0, "abc", 3);
}

int main(void)
{
    char    buf[5];

    signal(SIGINT, ctrlc_handler);
    while (1)
    {
        write(1, "> ", 2);
        memset(buf, 0, 5);
        read(0, &buf, 4);
        printf("Read: %s", buf);

    }
    return (0);
}

还有一个输出示例:

> Hey
Read: Hey
> ^Cabc
Read:

【问题讨论】:

    标签: c input signals


    【解决方案1】:

    找到这个答案:

    Writing to stdin and reading from stdout (UNIX/LINUX/C Programming)

    似乎我们无法写入标准输入,即使在我的情况下它似乎工作并且写入函数没有返回 -1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2018-02-19
      • 2020-10-02
      • 2016-04-03
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      相关资源
      最近更新 更多