自己曾经作过的小实验
youku链接:http://v.youku.com/v_show/id_XMTAyODE5MjEy.html
Technology, Life, Code, OpenSource, *nix, Mac and iphone, Mobile development
Archive for the ‘GNU/linux’ Category.
youku链接:http://v.youku.com/v_show/id_XMTAyODE5MjEy.html
见笑了….呵呵. 说的太年轻气盛了….别拍阿,我知错了.现在需要低调…呵呵.
我的邮件里有这么样子一封信http://www.unix-center.net/?p=133
看完以后,心中不知道有什么感觉,就去捐了100元。这时候有些人选择了,忽略,不信任,忘记等。。。确实这是一个自由的捐款,在自愿的情况下。但是我还是想帮助unix-center.net这个项目以及项目负责人,因为我收益于这个项目,我也知道,那些想学习linux或者unix的同学也一样,有些人有钱,有些人没钱,但是如果觉得这个项目帮助了自己或者能够帮助别人,那就请你出自己的一份力。因为在中国有这样的资源实属不多,所以我同项目负责人一样想让这个项目延续下去。说实话,这是我的一个个人信仰,也许也是这个项目负责人的信仰,帮助想要学习linux和unix系统的人。我现在只能做这些了,希望我们国家的开源和计算机事业都有源源不断的人材。
最后一句话,信任是不需要证据的,有了证据你再信任,信任就没有必要存在了。
—–送给那些不相信确有其事的人
我个人是一个linux爱好者,这种爱好,并不是让linux给我带来更丰厚的薪水,纯纯的爱好和喜欢.记得在大学的时候,有为牛人说linux不是给所有人准备的,直到现在我还是这样认为的,但是现在的情况呢?
网络上总是在把ubuntu和win7比,我怎么就是不能理解呢?现在ubuntu怎么了?难道想和windows一样了么?现在的关于linux的中文资讯,有多少是关于ubuntu的?我的意思是关于桌面的(包括Fedrora和SUSE),真的有意义么?google的andorid也来,linux马上就要变质了,这是一种及其个人的说法!linux在我心中是一种具有反抗,自由精神的一种载体,但是现在,它”翅膀硬了”,当在利益面前这种精神能不能保持呢?我说这些仅仅是一个技术爱好者的思维,可能一个商业运作者觉的这是一种顺理成章的事情.
首先我觉得,linux虽然是以GPL协议发布的,但是我总是觉得用linux赚钱还是有点邪恶的,包括”不作恶的”google.在我心中,linux应该是低调的,高效的,很有技术性的,linus开发linux的初衷就是爱好或者说是一种信仰,但是看看现在中国的linux使用者,他们中有些人会说:”看!我不用windows 我用linux 我用的是ubuntu,我能用linux看rmvb,能下载BT!”这些应该值得欣喜的,但是这些不用这样高调的,这是理所应当的.在我心中一直存在一种想法就是:”windows能干的事linux也能干,windows能干的事linux干不了的事就是不需要干的事!”当然在现在这种娱乐大众,炒作的风气之下,windows能干的事,linux原来干不了,现在能干了就是值得欣喜的事….我感到很可悲.对于linux甚至unix精神来说这就是一种蜕变!
话说娱乐大众,windows和mac做的都是很不错的(一个同学的论点),linux原来不会娱乐大众,但是现在会了,ubuntu先会的接着就是Fedora,SUSE.linux在桌面领域那一位数的占有律说明,娱乐的还不够好!大众需要的是娱乐,不是愚弄!既然不擅长,就别跟风!最后落得个愚弄大众,自己得不偿失.
我还是在想linux kernel的事,明白人都知道,linux 就是指kernel,并不是什么ubuntu,Fedora.对于商业的运作我真的不想考虑他们的感觉,我就是站在一个爱好者的角度或者说是传教士的角色,对初学linux的人和应用linux的人说:”对于内核,我们真应该好好看看了!” 中国人也是很强的!强!在我的理解并不是赚多少钱,看你能给人类带来多少贡献.至少,我们的大学里面,别整天学计算机基础的时候别老是教同学们一些word什么的,让一些非计算机专业的人只知道windows这个东西,让他们知道有linux,让他们知道自由,也让他们知道什么叫做版权!
就说到这里吧,喝得有点多…..不好意思,文章很乱,思路也很奇怪,算了就这样了,我喜欢linux就是了,看看我今天吃了变质的奶酪以后,明天会不会拉肚子….
/**************************************************************
* name : server.c *
* author : cyher *
* date : 2008-8-6 *
* description : 服务端进程向消息队列里面放消息传给客户端 *
**************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <time.h>
struct msgbuf/*消息队列结构*/
{
long mtype;
char mtext[256];
};
int
init_daemon(void);/*守护进程启动函数*/
int
main()
{
key_t key;
int msgid;
char *p;
time_t t;
struct msgbuf msg= {100,”"};/*设置消息的id为100*/
key = ftok(“/home/cyher/workspace/c/star”,’s’);/*产生一个key*/
msgid = msgget(key,IPC_CREAT | 0666);/*产生一个ipc标识*/
if(msgid == -1)
{
perror(“msgget”);
exit(1);
}
init_daemon();/*守护进程创建*/
while(1)/*进入循环执行*/
{
t = time(NULL);
p = asctime(localtime(&t));
strcpy(msg.mtext,p);/*把时间字符放入msg.mtext*/
msgsnd(msgid,&msg,strlen(msg.mtext)+1,IPC_NOWAIT);/*放入消息队列无阻塞*/
sleep(2);
}
}
/**************************************************************
* name : client.c *
* author : cyher *
* date : 2008-8-6 *
* description : 客户端进程从消息队列里面取消息打印到屏幕上 *
**************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <time.h>
struct msgbuf
{
long mtype;
char mtext[256];
};
int
main()
{
key_t key;
int msgid;
struct msgbuf msg;
key = ftok(“/home/cyher/workspace/c/star”,’s’);
msgid = msgget(key,IPC_CREAT | 0666);
if(msgid == -1)
{
perror(“msgget”);
exit(1);
}
while(1)
{
if(msgrcv(msgid,&msg,256,100,IPC_NOWAIT) == -1)
{
perror(“msgrcv:”);
}
printf(“%s”,msg.mtext);
memset(&msg,0,sizeof(struct msgbuf));
sleep(2);
}
}
/*******************************
* name:init_daemon.c
* author:cyher
* date:2008-8-1
* description:initialize a daemon process
* */
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int
init_daemon()
{
int pid;
int i;
if( (pid=fork())<0 )
{
perror(“fork”);
exit(1);
}
else if(pid > 0) //是父进程就退出
{
exit(0);
}
if((pid=fork()) < 0)
{
perror(“fork2″);
exit(1);
}
else if (pid > 0)//是第一子进程也退出
{
exit(0);
}
//
//下面都是第二子进程运行
sleep(2);
setsid();//使子进程脱离父进程的关系,把父进程的信息改掉
//脱离终端的控制
//
for(i=0;i<1024;i++)//关闭文件描述符,节省资源
close(i);
chdir(“/tmp”);//改变工作目录
umask(0);//重设掩码,使程序工作顺畅
return 0;
}