linux编程基础

        我们这门是考察课,选的是黑马教程的书,感觉还是很基础的,而且学校老师给了代码就不讲了,通过博客把知识点梳理下,有时间去图书馆借几本linux的专业的书看看,特别是讲shell这一块的吧!,写这些是自己梳理下知道点,未来自己掌握,不是供其他人看,不好意思了!

第一章 

      安装CentOS和远程登录,用华为和华三软件远程都行

第二章 

       linux常用命令,上学期学过 ubuntu,所以命令基本都知道,忘记看下就会了,

         网络命令  考软设的时候考到了,要是找点看这书那个题也不会错了,唉!

          netstat   打印linux系统中网络的状态信息,显示端口信息

第三章

       用户管理,上学期学过

第四章

    shell编程      老师直接跳过,这个其实很重要,有时间去图书馆补习下shell

第五章

   linux文件系统,学过操作系统,不过这个是讲linux的,一些文件存储,大致了解了下,

   文件I/O, 用的是c语言写的,这个我学c的时候看了下,但记不住,知道那个意思,二次c语言优秀,但以后肯定是java,c就学        的少了。

第六章

  进程管理

   PCB本质是task_struct结构体    进程pid  父进程ppid,书上给了一些c语言进程代码

   fork()  创建子进程,没什么好看的,要是给java代码就好了

   wait() 调用此函数进程会挂起,当子进程退出时,此进程才运行

第七章

    信号 :中断信号

     int kill(pid_t pid, int sig)     pid为接收信号的进程  sig表示要发送的信号编号

    pid>0,发送信号sig给进程号为pid进程    pid=0 发送信号sig给当前进程所属组中的所有进程

   pid=-1,发送信号sig给除1号进程与当前进程外的所有进程    pid<-1 发送信号sig给属于进程组pid所有进程

   这章整体来说就是一些信号作用及函数

第八章

  进程间的通信

   创建管道   int pipe(int pipefd[2]);

   管道通信  int dup2(int oldfd,int newfd); 将参数oldfd文件描述符传递给newld   成功返回newld  否则返回-1

     .....

第九章

  创建线程

   int pthread_create(pthread_t *thread,NULL,fun,NULL);

  获取id       pthread_t pthread_self(void);

  退出线程   pthread_exit(NULL);

  线程终止  int pthread_cancel(pthread_t thread);    

  线程挂起   int pthread_join(pthread_t thread,void **retval);     

   ......不写了,都是关于线程的函数

 

第十章

   socket编程,计算机网络,五层协议......这个感觉还是蛮重要的

 1.   创建套接字  int socket(int domain,int type,int protocol);

  domain 指定通信域,选择通信的地址族,常用设置AF_INET和AF_UNIX ,前者针对因特网,可与远程的通信端连接通信

  后者针对本地进程,可在本地系统进程间进行通信

  type 指定socket的类型,即选择哪个协议                           protocol 设置为0,表示默认协议

 2.   int bind(int sockfd , const struct sockaddr *addr,socklen_t addrlen);

      bing()用于服务器端,调用bind()函数进行地址绑定   

       sockfd为文件描述符    addr:服务器的通信地址        addrlen 表示addr的长度

struct sockaddr_in servaddr;     //结构体定义
bzero(&servaddr,sizeof(servaddr));   //结构体清0
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(85);

INADDR_ANY选项
    网络编程中常用到bind函数,需要绑定IP地址,这时可以设置INADDR_ANY
    INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。
也就是表示本机的所有IP,因为有些机子不止一块网卡,多网卡的情况下,这个就表示所有网卡ip地址的意思。
    比如一台电脑有3块网卡,分别连接三个网络,那么这台电脑就有3个ip地址了,如果某个应用程序需要监听某
个端口,那他要监听哪个网卡地址的端口呢?如果绑定某个具体的ip地址,你只能监听你所设置的ip地址所在的网
卡的端口,其它两块网卡无法监听端口,如果我需要三个网卡都监听,那就需要绑定3个ip,也就等于需要管理3个
套接字进行数据交换,这样岂不是很繁琐?
    所以你只需绑定INADDR_ANY,管理一个套接字就行,不管数据是从哪个网卡过来的,
只要是绑定的端口号过来的数据,都可以接收到。

 当然, 客户端connect时,不能使用INADDR_ANY选项。必须指明要连接哪个服务器IP。

3.listen(int sockfd,int backlog);     用于服务端              sockfd表示socket文件描述符, backlog设置队列的最大长度

4. accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);

      sockfd为listen()函数返回监听套接字 , addr是传出参数,表示客户端的地址

5. connect(int sockfd, sonst struct sockaddr *addr,socklen_t addrlen);   用于客户端

     向服务器发起连接请求,与bing()函数相似

6.  ssize_t send(int sockfd, const void *buf, size_t len, int flags);

   向处于连接状态的套接字中发送数据      sockfd文件描述符 ,buf数据缓冲区,flags 调用执行方式(堵塞/非堵塞)

 

 

 

 

    

        

    

你可能感兴趣的:(linux)