Jun 15

这几天事儿太杂,心烦意乱,还不小心把移动硬盘给格了(冲动是魔鬼啊!),自己辛辛苦苦搞到的学习资料都没了,郁闷啊!

还好,事后整理了一下,损失不严重,大部分都可以找回来(总算有点心慰)。

这两天还要练车,事儿真多,有的时候有点“剪不断,理还乱”感觉,呵呵。

不管怎么说,得加把劲了,我还要成为高手,成为科学家呢!哈哈!

Jan 23

今天在看c++时发现了这样一个问题:

在WINDOWS中,可以用这样写来实现程序的暂停

 

#include <iostream>
int main()
{
    cout << "Hello world!!" << endl;
    system("pause");
}

可是在LINUX中却不能做到,呵呵,这却实难到我了。

我上网查了一下,有牛人在/usr/include下加了头文件conio.h

 

#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>

int getch(void)
{
    int c=0;
    struct termios org_opts, new_opts;
    int res=0;
    /*---- store old settings ----*/
    res=tcgetattr(STDIN_FILENO, &org_opts);
    assert(res==0);
    /*---- set new terminal parms ----*/
    memcpy(&new_opts, &org_opts, sizeof(new_opts));
    new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
    tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
    c=getchar();
    /*---- restore old settings ----*/
    res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
    assert(res==0);
    return c;
}

 

 

但是我在应用时,没有成功!

呵呵,C的到是有很多方法 http://blog.chinaunix.net/u2/67401/showart.php?id=576410

我这儿还有一个代码实现了:

 

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>

int getch();
void press_key();

int main()
{
	printf("Hello world!\n");
	press_key();
	return 0;
}

void press_key()
{
	printf("Press any key to continue...\n");
	getch();
}

int getch()
{
	struct termios tm,tm_old;
	int fd = STDIN_FILENO,c;

	if (tcgetattr(fd, &tm) < 0)
	{
		return -1;
	}

	tm_old = tm;
	cfmakeraw(&tm);

	if (tcsetattr(fd,TCSANOW, &tm) < 0)
	{
		return -1;
	}

	c = fgetc(stdin);

	if (tcsetattr(fd,TCSANOW,&tm_old) < 0) 
	{
		return -1;
	}
	return c;
}

 

 

呵呵,多多发现,多多学习吧!!