gpt4 book ai didi

c - 程序收到信号 sigtstp 已停止(用户)

转载 作者:太空狗 更新时间:2023-10-29 12:05:40 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
What is EOF in the C programming language?

当我学习 K&R C 编程语言时,我试图编写一个程序,从控制台读取一些行,然后输出所有输入。我需要使用 ctrl-z (EOF) 来终止我的输入流。但问题是当我点击 ctrl-z 时,程序停止了,所有输入都无法输出到控制台(gdb 说“程序接收到信号 SIGTSTP,已停止(用户)。__kernel_vsyscall() 中的 0X00132416”)。我尝试使用 kill 函数来处理这个终止信号,但失败了。我该怎么做才能使控制台输出所有输入行。我的部分代码如下:

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

#define MAXLINES 5000 /* possibly max amount of lines */
char *lineptr[MAXLINES]; /* pointers to lines read */

int readlines(char *lineptr[], int nlines);
void writelines(char *lineptr[], int nlines);

main(int argc, char *argv[])
{
int nlines; /* number of lines read */


**if ((nlines = readlines(lineptr, MAXLINES)) >= 0)** {//program finished when I tap ctrl-z

writelines(lineptr, nlines); // from this line can't be run
return 0;
} else {
printf("input too big to sort\n");
return 1;
}
}

#define MAXLEN 1000
int get_line(char *, int);
char *alloc(int);

/* readlines : read the input */
int readlines(char *lineptr[], int maxlines)
{
int len, nlines;
char *p, line[MAXLEN];
nlines = 0;
while ((len = get_line(line, MAXLEN)) > 0)
if (nlines >= maxlines || (p = alloc(len)) == NULL)
return -1;
else {
line[len - 1] = '\0';
strcpy(p, line);
lineptr[nlines++] = p;
}
return nlines;
}

/* writelines : output the readlines */
void writelines(char *lineptr[], int nlines)
{
int i;

for (i = 0; i < nlines; i++)
printf("%s\n", lineptr[i]);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com