
result=i*j
printf("%d*%d=%-3d",i,j,result)/*-3d表示左对齐,占3位*/}
printf("\n")/*每一行后换行*/}
}
2.
/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() {
long f1,f2
int if1=f2=1
for(i=1i<=20i++)
{ printf("%12ld %12ld",f1,f2)
if(i%2==0) printf("\n")/*控制输出,每行四个*/ f1=f1+f2/*前两个月加起来赋值给第三个月*/ f2=f1+f2/*前两个月加起来赋值给第三个月*/
} }
3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main() {
int m,i,k,h=0,leap=1 printf("\n")
for(m=101m<=200m++){ k=sqrt(m+1) for(i=2i<=ki++)
if(m%i==0)
{leap=0break}
if(leap)/*内循环结束后,leap依然为1,则m是素数*/
{printf("%-4d",m)h++ if(h%10==0)printf("\n") } leap=1 }
printf("\nThe total is %d",h)
}
4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/ main() {
static int k[10] int i,j,n,s
for(j=2j<1000j++) {
n=-1 s=j
for(i=1i<ji++){if((j%i)==0) { n++ s=s-i k[n]=i }}
if(s==0)
{printf("%d is a wanshu: ",j)for(i=0i<ni++)
printf("%d,",k[i])printf("%d\n",k[n]) } }
}
5、/*编程打印直角杨辉三角形*/ main()
{int i,j,a[6][6] for(i=0i<=5i++) {a[i][i]=1a[i][0]=1} for(i=2i<=5i++)
for(j=1j<=i-1j++)
a[i][j]=a[i-1][j]+a[i-1][j-1] for(i=0i<=5i++) {for(j=0j<=ij++)
printf("%4d",a[i][j]) printf("\n")}
}
这些程序都是经典的,而且很简单,希望对你有帮助,10个我写不下去,因为字数限制,还有一点就是,gcc是编译器,一般是在LINUX平台,实质上C语言的话代码是和WINDOWS没区别的,只是有些库函数的调用有区别,一般在LINUX平台写完一个源代码是.c文件,在GCC中通过命令行输入gcc xx.c就可以生产可执行文件了
服务器端#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char* argv)
{
int server_sockfd,client_sockfd
int server_len,client_len
struct sockaddr_in server_address
struct sockaddr_in client_address
//获得一个socket文件描述符,使用tcp ip 协议
server_sockfd=socket(AF_INET,SOCK_STREAM,0)
server_address.sin_family=AF_INET
//设置服务器端接受任何主机的请求
server_address.sin_addr.s_addr=htonl(INADDR_ANY)
//使用端口9734 来接受请求
server_address.sin_port=htons(9734)
server_len=sizeof(server_address)
//绑定socket
bind(server_sockfd,(struct sockaddr *)&server_address,server_len)
//监听连接请求,连接请求队列 大小为 5
listen(server_sockfd,5)
while(1)
{
char ch
printf("server waiting\n")
client_len=sizeof(client_address)
//接受client 端的连接请求,如果没有连接请求,该进程将阻塞
client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len)
//读数据
read(client_sockfd,&ch,1)
ch++
//写数据
write(client_sockfd,&ch,1)
//关闭与client端的连接
close(client_sockfd)
}
}
客户端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc,char* argv)
{
int sockfd
int len
struct sockaddr_in address
int result
char ch='A'
//设置需要连接服务器的 ip port
sockfd=socket(AF_INET,SOCK_STREAM,0)
address.sin_family=AF_INET
address.sin_addr.s_addr=inet_addr("127.0.0.1")
address.sin_port=htons(9734)
len=sizeof(address)
//连接服务器
result=connect(sockfd,(struct sockaddr *)&address,len)
if(result==-1)
{
perror("oops:client3")
exit(1)
}
//写数据
write(sockfd,&ch,1)
//读数据
read(sockfd,&ch,1)
printf("char from server=%c\n",ch)
//关闭与服务器的连接
close(sockfd)
exit(0)
}
关于你的问题:
1.简单的方法,设置socket套接字为非阻塞模式,然后轮询,并查看是否超时。
或者是使用select poll 等方法 ,设置超时时间。
或者 使用 alarm 信号,都可以。
2..每当接收到一个client 端的连接请求,就开辟一个线程为之服务。
或者使用select poll epoll等方法,推荐这个。
3.你是指的是处理信号吗?这个有专门的函数 signal 可以处理。
linxu下的init命令是进程初始化工具。下面由我为大家整理了linux的init命令的详细解释的相关知识,希望对大家有帮助!
一、linux中的init命令的详细解释
init命令
init命令是Linux下的进程初始化工具,init进程是所有Linu x的进 程的父进程,它的进程号为1。init命令是Linux *** 作系统 中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
语法
init(选项)(参数)
选项
-b:不执行相关脚本而直接进入单用户模式
-s:切换到单用户模式。 参数 运行等级:指定Linux系统要切换到的运行等级。
二、linux中的init命令的详解实例
几个常用的命令
查看系统进程命令:ps -ef | head
查看init的配置文件:more /etc/inittab
查看系统当前运行的级别:runlevel
运行级别
到底什么是运行级呢?简单的说,运行级就是 *** 作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在/etc/inittab中查看它的英文介绍。
#0 停机(千万不能把initdefault 设置为0)
#1 单用户模式
#2 多用户,没有 NFS(和级别3相似,会停止部分服务)
#3 完全多用户模式
#4 没有用到
#5 x11(Xwindow)
#6 重新启动(千万不要把initdefault 设置为6)
三、linux的init命令的六种模式简介
6种模式中有两种是系统内定的:
0:停止系统运行。init 0〈回车〉相当于 halt〈回车〉。
6:重启系统。init 6〈回车〉相当于 reboot〈回车〉。
如果你了解/etc/inittab文件,就千万不要把0设为缺省登录模式,否则你的Linux的运行就只能两点一线了&mdash&mdash开机&larr&rarr停机,或者是开机&larr&rarr重启的无限循环。 其他的4种模式实际上是由 *** 作系统确定的。如果你愿意修改Linux的源代码,你也可以定义这4种(甚至6种)模式的实际功能。其实只要知道Linux发布厂商的约定就足够了,下面我们就以蓝点2.0为例,看看init的常用约定吧&mdash&mdash
init 1&mdash&mdash进入单用户模式。这和开机是选择Safe Mode是一样的,可以以root的权限对系统进行管理,但是不能进入图形模式,也不支持中文,声卡和网络服务等就更不用提了。总之,它是系统可运行的最低软硬件配置。 它和Windows的安全模式是比较相似的,但一个本质的差别:在于只要你在Linux下运行相应的命令,硬件设备是可以在这种模式下被驱动的。例如只 要你的光驱连线正确,一个mount /dev/cdrom命令,你的光盘内容就随时可以在/mnt/cdrom里读出来。 要注意的是这一模式的字符控制台不能支持中文,但进入Xwin仍然能看到蓝点漂亮的中文字体,输入法也完全没有问题。
init 2&mdash&mdash进入无网络服务的多用户模式 如果你的计算机根本没有连网,这个模式就跟普通模式一样了。否则的话别人就不能通过网络www、ftp或telnet登录你的计算机了,但对与ping 命令你的计算机还是会作出反应的。如果连ping你也拒绝访问,那么就不如直接把网线拔了! 如果你的计算机作为网络服务器,这一模式就挺有用了。譬如你要修整系统或更新网站内容,就可以把计算机调到这一模式,然后放心的进行你的工作,等工作完成 后再切换到模式3或5就行了。但注意如果原来已经有用户ftp或telnet进入了你的系统,用init 2 是不能中断他和你的连接的,小心让别人在这个时候黑你一把哦!&mdash&mdash执行init 2前先用who命令检查一下吧。 这一模式下,在本机上的使用基本不变。你仍然可以访问网络,上Internet,ftp或telnet到网络中的任何一台服务器。只是你的计算机在网络中不给其他机器提供服务而已。计算机从第3运行级转入这一模式时你会看到一系列网络服务被停止。
init 3或init 4&mdash&mdash进入控制台登录的多用户模式 这是蓝点1.0的默认登录模式,每个用户都要先从黑白屏幕登录之后才可以运行才能start x后进 入KDE精彩的图形世界。而且Xwin启动后,运行 startx的控制台就被锁定了,除非你用startx &把Xwin放到后台运行。要到别的控制台用Ctrl+Alt+F,表示数字1到6中任一个,Ctrl+Alt+F7则回到图形模式专用的7 号控制台(有时要用Ctrl+Alt+F8)。 如果是从init 1 或init 2切换回init 3,我们可以看到一系列服务被重启。
init 5&mdash&mdash进入图形化登录的多用户模式 这是蓝点2.0安装后默认的启动模式。系统启动后或执行init 5命令后,悦目的蓝绿过渡色背景上就出现了漂亮的登录窗口。 所有帐号名都以图标的方式出现在窗口里等待选择,不必自己输入。不过系统管理员可能不高兴&mdash&mdash这样系统里有多少用户岂不是让人一目了然?不过在KDE控制中心中修改就可以解决问题的,我就不多说啦。 如果系统出了问题,只要启动仍然能进入这个界面(说明X服务器没有问题),root帐号也可以从这里进入Linux的安全模式,就是在左下角的选择框把 模式从kde换为save failed就行了。当然进入的界面绝对没有美观可言,但用于修复X窗口管理器或应用程序的问题是必不可少的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)