当前位置: 技术问答>linux和unix
gdb重定向输入输出
来源: 互联网 发布时间:2017-04-07
本文导语: 源码t1.c: #include #include #include #include #define BUFSIZE 100 int main(void) { char buf[BUFSIZE]; memset(buf,0,BUFSIZE); puts("!!!Hello c World!!!"); /* prints !!!Hello World!!! */ int n; ...
源码t1.c:
#include
#include
#include
#include
#define BUFSIZE 100
int main(void)
{
char buf[BUFSIZE];
memset(buf,0,BUFSIZE);
puts("!!!Hello c World!!!"); /* prints !!!Hello World!!! */
int n;
while((n = read(STDIN_FILENO,buf,BUFSIZ)) > 0)
{
if(write(STDOUT_FILENO,buf,n) != n)
{
perror("write error");
}
}
if(n 0)
你这儿使用的是BUFSIZ(这个是系统定义的一个宏,通常是4096),而不是你自己定义的BUFSIZE
#include
#include
#include
#include
#define BUFSIZE 100
int main(void)
{
char buf[BUFSIZE];
memset(buf,0,BUFSIZE);
puts("!!!Hello c World!!!"); /* prints !!!Hello World!!! */
int n;
while((n = read(STDIN_FILENO,buf,BUFSIZ)) > 0)
{
if(write(STDOUT_FILENO,buf,n) != n)
{
perror("write error");
}
}
if(n 0)
你这儿使用的是BUFSIZ(这个是系统定义的一个宏,通常是4096),而不是你自己定义的BUFSIZE
|
...
#define BUFSIZE 100 //这里你自己定义的宏是BUFSIZE,不是BUFSIZ
int main(void)
{
char buf[BUFSIZE]; //这里数组长度为100
memset(buf,0,BUFSIZE);
puts("!!!Hello c World!!!"); /* prints !!!Hello World!!! */
int n;
while((n = read(STDIN_FILENO,buf,BUFSIZ)) > 0) //这里的BUFSIZ是系统定义的,我的linux环境下是8192,远大于buf的长度100,所以core了,改成你自己的BUFSIZE就OK了
...