`
helloyesyes
  • 浏览: 1304012 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Linux编程学习笔记

阅读更多

我学习Linux编程的过程。从学习安装Linux开始,然后学习了几条命令行命令,接着启动Telnet服务等等。以下是具体过程。

>>>>Linux启动时不进入Xwindow,而是字符界面:

修改 /etc/inittab

id:5:initdefault:

id:3:initdefault:

>>>>配置Telnet

1、检查是否有安装包:

rpm -q telnet

rpm -q telnet-server

2、如果没有则需要安装:

rpm -i telnet-server-0.17-25i386.rpm

注意,可能有不同版本TelnetServer

3、运行ntsysvntsysv为系统中管理服务的程序,在Telnet前选择*

4service xinetd restart

5Telnet的配置文件在

/etc/xinetd.d/telnet

可以修改配置连接授权网段、域名、时间段等等。

6、默认情况下,Telnet不运行root权限登陆,如果确实需要,则修改:

vi /etc/pam.d/login

#auth required pam_securetty.so #

将上行加注释。

>>>>DOSLinux常用命令对应关系

------------------------------

copy cp

move mv

dir ls

cls clear

exit exit

date date

del rm

echo echo

edit vi

fc diff

find grep

format mformat

cmd /? man cmd

mkdir mkdir

more less

ren mv

chdir pwd

cd path cd path

cd .. cd ..

time date

mem free

>>>>用户管理命令

useradd name //加一个命令

passwd name //设置用户的口令

>>>>用户切换

su username

可以切换到root权限,但需要知道password

>>>>配置FTP Server

1、查询FTP Server

rpm -q vsftpd

2、启动FTP Server

/etc/rc.d/init.d/vsftpd start

相应有stoprestart等选项

3、也可以用上面配置Telnet的方法进行启动。

>>>>>Linux下的打包和压缩

常见文件名:.gz,.tar.gz,.tgz,.bz2,.Z,.tar

打包和压缩是两个不同概念,大包是一大堆文件打成一个文件,压缩是文件变小。

tar是常用的打包程序。

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

---------------------------------------------

.gz

解压1gunzip FileName.gz

解压2gzip -d FileName.gz

压缩:gzip FileName

.tar.gz .tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

---------------------------------------------

.bz2

解压1bzip2 -d FileName.bz2

解压2bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

---------------------------------------------

.bz

解压1bzip2 -d FileName.bz

解压2bunzip2 FileName.bz

压缩:未知

.tar.bz

解压:tar jxvf FileName.tar.bz

压缩:未知

---------------------------------------------

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

---------------------------------------------

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

---------------------------------------------

.rar

解压:rar x FileName.rar

压缩:rar a FileName.rar DirName

rar请到:http://www.rarsoft.com/download.htm 下载!

解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp rar_static /usr/bin/rar

---------------------------------------------

.lha

解压:lha -e FileName.lha

压缩:lha -a FileName.lha FileName

lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!

>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp lha /usr/bin/

---------------------------------------------

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

---------------------------------------------

.deb

解包:ar p FileName.deb data.tar.gz | tar zxf -

---------------------------------------------

.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea

解压:sEx x FileName.*

压缩:sEx a FileName.* FileName

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

sEx请到: http://sourceforge.net/projects/sex下载!

解压后请将sEx拷贝到/usr/bin目录

vi使用

退出 EscZZ 或者输入“:”,然后按Q。如果使用wq,则包括写入和退出。

Q!是不写入直接退出

Vi的关键是有两种状态,一种是“插入”状态,一种是“命令”状态。前一种状态,屏幕下面有“插入”的标识。另一种状态就是命令状态,执行任何命令,先输入一个“:”符号。然后再执行。

Linux开发入门

Red Hat9.0为开发平台

Linux操作系统内核底层的开发工具和辅助工具,有的是直接建立在内核基础上,如ShellGCCMake等;有的是建立在脚本语言的基础之上的,如AutomakeAutoconfLibtool等。它们是Linux操作系统外层的图形界面开发工具(GTK+QT等)和网络应用开发工具(PerlPHPPython等)的基础和过渡。

GCC

-o 输出可执行文件

-c 只输出目标代码

-g 编译时提供以后对程序进行调试的信息

make命令

Makefile是它的配置文件。

#开始为注释。

Makefile用于描述文件的依赖关系,第一行总是依赖关系,第二行是规则。

比如:

main:main.o mytool1.o mytool2.o

gcc -o main main.o mytool1.o mytool2.o

表明,目标main的依赖对象是main.omytool1.omytool2.o

下面一行是规则。注意规则前面有个TAB键。

因此,makefile的格式一般是:

target: components

TAB rule

makefile有三个有用的变量:

$@ 目标文件

$^ 所有依赖的文件

$< 第一个依赖文件

l Linux沿用Unix的习惯,称服务的应用程序为daemon

l Linux的目标是网络OSWindows的核心是所见即所得。

l 即使是纯文本,Linux同样拥有先进的网络、脚本和安全能力。

关于进程方面的编程

l 进程有五个状态:

新建、运行、阻塞、就绪和完成。

阻塞-进程正等待某一事情发生

就绪-等待CPU的执行命令

完成-系统正回收资源

l 进程有标志,即ID。下面代码掩饰获取进程ID的方法。

l Linux支持许多不同格式的可执行文件。ELF是一个,Java是另一个。

l 每个进程使用一个task_structLinuxtaskProcess互用)的数据结构来表示。

l 系统中最大进程数受到向量表task的限制。

l 系统用current指针指向当前正运行的进程。

l 所有进程都有父进程,这是一个Clone的过程。意义在于保证进程间的连接是严密的。Pstree命令用于查看这一父子孙的关系。

l 进程的根是init进程

l 系统按照组分配权限,一个进程可以同时属于多个组。

l 每一个进程同时拥有四对进程和组标识符:

Uidgid 进程所有者的ID

Effective uid , gid 进程为了获取资源,系统通过有效ID审核实际的权限。

File system uid , gid 和上面Eid差不多。

Saved uid , gid。- 进程执行后Eid等可能会改变,但Sid不会,他是最初的真实ID

下面是一段例子代码:

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

#include <pwd.h>

int main(int argc , char ** argv)

{

pid_t my_pid;

pid_t parent_pid;

uid_t my_uid;

uid_t my_euid;

gid_t my_gid;

gid_t my_egid;

struct passwd * my_info;

my_pid = getpid();

parent_pid = getppid();

my_uid = getuid();

my_euid = geteuid();

my_gid = getgid();

my_egid = getegid();

my_info = getpwuid(my_uid);

printf("Process ID : %ld \n",my_pid);

printf("Parent ID : %ld \n",parent_pid);

printf("User ID : %ld \n",my_uid);

printf("Effective user ID : %ld \n",my_euid);

printf("Group ID : %ld \n",my_gid);

printf("Effective Group ID: %ld \n",my_egid);

if(my_info)

{

printf("My Login Name : %s \n",my_info->pw_name);

printf("My Password :%s\n" ,my_info->pw_passwd);

printf("My User ID :%ld\n",my_info->pw_uid);

printf("My Group ID :%ld\n",my_info->pw_gid);

printf("My Real Name:%s\n" ,my_info->pw_gecos);

printf("My Home Dir :%s\n", my_info->pw_dir);

printf("My Work Shell:%s\n", my_info->pw_shell);

}

}

关于fork()

用于父进程创建子进程。

进程ID和父进程ID是不同的。

因为Linux的多用户特性,因此需要父进程创建子进程。

一旦子进程被创建,父子进程就相互竞争系统资源。

如果希望子进程继续执行而父进程阻塞直到子进程完成,可以使用wait或者waitpid

Exec()

为了使用系统程序,可以使用exec族,一共有5个函数

execl

execlp

execle

execv

execvp

fork函数与普通函数的不同之处在于,函数如果调用成功,将返回两次。在父进程中返回子进程的PID,在子进程中返回0。如果调用不成功,则返回0

下面是一段例子代码:

#include "stdio.h"

#include "sys/types.h"

#include "unistd.h"

#include "string.h"

#include "math.h"

#include "sys/wait.h"

#include "errno.h"

void main(void)

{

pid_t child;

int status;

int i;

printf("This will demostrate how to get child status\n");

if( (child = fork()) == -1)

{

printf("Fork Error :%s\n",strerror(errno));

exit(i);

}

else

{

if( child == 0 )

{

int i;

printf("I am the child: %ld\n",getpid());

for(i = 0;i < 1000000;i ++)

sin(i);

i = 5;

printf("I exit with %d\n",i);

exit(i);

}

}

// while( ((child == wait(&status)) == -1)

sleep(1);

child = wait(&status);

printf("child's pid = %d . exit status = %d \n",getpid(),WEXITSTATUS(status));

}

//使用数学函数,编译时要加-lm选项。

守护进程

也就是后台程序。可以在命令后面加入“&”符号即可使程序运行于后台。

编写思想:父进程创建子进程,子进程杀死父进程。

#include "stdio.h"

#include "sys/types.h"

#include "unistd.h"

#include "string.h"

#include "sys/wait.h"

#include "errno.h"

void main(void)

{

pid_t child;

int status;

if( (child = fork()) == -1)

{

printf("Fork Error:%s \n",strerror(errno));

exit(1);

}

else

{

if(child > 0)

{

while(1)

{

if(kill(getppid(),SIGTERM) == -1)

{

printf("Kill Parent Error:%s\n",strerror(errno));

exit(1);

}

while(1)

{

printf("some codes\n");

sleep(10);

} } } }

}

= 未完待续 =

Linux学习笔记续

分享到:
评论

相关推荐

    linux编程学习笔记PDF资料下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于Linux编程学习笔记的PDF资料。下面将对这份资料可能涉及的关键知识点进行详细的阐述。 ### Linux编程基础知识 #### 1. Linux操作系统概述 - **定义与特点**:Linux...

    我的linux编程学习笔记(一).pdf

    我的linux编程学习笔记(一).pdf

    我的linux编程学习笔记(一)分享.pdf

    我的linux编程学习笔记(一)分享.pdf

    Linux Shell编程学习笔记

    Linux Shell编程学习笔记

    linux系统编程笔记

    对于想要深入学习Linux系统编程的开发者来说,这些知识点是必不可少的。需要注意的是,笔记中部分文字可能存在OCR扫描错误,但主要概念和知识点已经通过上下文进行了推敲和修正,确保了内容的连贯性和准确性。

    linux嵌入式学习笔记更新中

    Linux 嵌入式学习笔记主要涵盖了Linux操作系统的基础知识以及C语言编程的相关内容。下面将对这些知识点进行详细的解析。 1. Linux基础操作: - 登录:在Linux系统中,用户通过`用户名:密码`的方式登录系统。 - ...

    linux课堂学习笔记

    总的来说,这份“Linux课堂学习笔记”资料包提供了一个全面的学习路径,涵盖了从基础的Linux操作系统原理,到ARM架构的硬件特性,再到实际的设备驱动编程。对于想要在Linux环境下进行嵌入式开发的学员来说,是一份...

    Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

    Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!

    linux学习基础笔记

    这份“Linux学习笔记.doc”文档可能会详细讲解以上各点,对于初学者来说是一份非常实用的学习资料。通过深入学习,你可以掌握Linux操作系统的核心技能,为后续的系统管理、开发或运维工作打下坚实基础。

    linux学习笔记.pdf

    本文档主要记录了 Linux 操作系统的学习笔记,涵盖了 Basic 的编程、VI 编辑器的使用、GCC 编译器的应用、GDB 调试工具的使用等方面的知识点。 一、编程基础 * 了解 C 语言的基本语法,例如变量声明、数据类型、...

    Linux系统编程学习笔记

    ### Linux系统编程学习笔记 #### 一、IO **1.1 标准I/O (stdio)** - **fopen/fclose**: `fopen` 用于打开或创建一个文件,并返回一个指向该文件的 `FILE *` 类型的指针。`fclose` 用于关闭由 `FILE *` 指向的文件...

    linux网络编程学习笔记

    在&lt;linux/socket.h&gt;;中有 sockaddr的定义 struct sockaddr{ unisgned short as_family; char sa_data[14]; }; 不过由于系统的兼容性,我们一般不用这个头文件,而使用另外一个结构(struct sock addr_in) 来代替...

    编程学习笔记

    这篇编程学习笔记旨在为初学者提供一个全面而基础的指引,尤其适合那些对编程一无所知的新手。它涵盖了多种编程语言和技术,旨在帮助你快速踏入编程世界的大门。 首先,我们从“01.System[windows,Linux]”开始,这...

    Linux学习笔记——入门资料

    Linux学习笔记——入门资料 Linux,作为一款开源、免费的操作系统,因其稳定性和安全性而备受开发者和系统管理员的青睐。这份“Linux学习笔记”旨在帮助初学者快速掌握Linux的基础知识和操作技能,从而轻松入门。 ...

    马哥的linux学习笔记

    《马哥的Linux学习笔记》是一份针对初学者和进阶者精心编撰的Linux教程,旨在帮助读者全面掌握Linux操作系统的核心概念、命令行操作以及系统管理技能。这份笔记以清晰明了的语言和实例解析了Linux系统的各个方面,是...

    韩顺平linux学习笔记

    学习笔记分为多个阶段,从基础的 Linux 平台开发到高级的 Unix 环境编程,并涉及到 Linux 应用系统开发和嵌入式开发等方面。 Linux 基础知识 Linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经...

    Linux Shell编程笔记

    描述:这是一份综合的Linux Shell编程笔记,适用于想要学习或加强对Linux操作系统下Shell脚本编程的理解的人。该笔记包含了Shell脚本的基础知识、常用命令和技巧,以及实际的编程示例和案例。无论您是初学者还是有...

    UNIX环境高级编程 学习笔记

    学习LINUX环境编程的见证,一笔一画,脉络清楚,结构清晰,自己再看一目了然,传上来与众分享

Global site tag (gtag.js) - Google Analytics