unix/linux编程实践教程:进程和程序

1. ps命令的介绍

leichaojian@ThinkPad-T430i:~$ ps -la
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R  1000  4133  4048  0  80   0 -  3545 -      pts/0    00:00:00 ps

S: 代表进程的状态:为S则代表睡眠,为R则代表运行。

UID,PID,PPID:用户ID,进程ID,父ID

PRI:进程的优先级

NI:进程的niceness级别

SZ:进程的大小

WCHAN:睡眠的原因


2. 子进程的例子

1) 子进程和父进程的返回值

#include <stdio.h>

int main( void )
{
        int     ret_from_fork, mypid;
        mypid = getpid();
        printf("before: my pid is %d\n", mypid );

        ret_from_fork = fork();
        sleep( 1 );
        printf("after:my pid is %d, fork() said %d\n", getpid(), ret_from_fork);
}

程序输出:

leichaojian@ThinkPad-T430i:~$ ./a.out
before: my pid is 12554
after:my pid is 12554, fork() said 12555
after:my pid is 12555, fork() said 0

    函数种sleep的作用是:让子进程先完成并退出,然后继续父进程的执行。而fork函数向父进程返回子进程的ID,向子进程返回0。

2) 子进程调用子进程

#include <stdio.h>
int main( void )
{
        printf("my pid is %d\n", getpid());
        fork();
        fork();
        fork();
        printf("my pid is %d\n", getpid());
        return 0;
}
~ 
    程序输出:

leichaojian@ThinkPad-T430i:~$ ./a.out
my pid is 2983
my pid is 2983
my pid is 2985
my pid is 2988
my pid is 2984
my pid is 2986
my pid is 2989
my pid is 2987
my pid is 2990

3. 初识脚本

1)脚本小程序

#this is called script0
#it runs some commands
ls
echo the current date/time is
date
echo my name is
whoami
程序输出:

leichaojian@ThinkPad-T430i:~$ sh script0
ac.c		       Downloads	 logout_tty.c  rotate.c  Templates
a.out		       echostate.c	 ls.c	       script0	 test.c
cli.c		       examples.desktop  more01.c      serv.c	 tt.c
coreutils-8.23	       foo		 more.c        setjmp.c  Videos
coreutils-8.23.tar.xz  fork1.c		 Music	       sig.c	 who1.c
cp.c		       fork2.c		 Pictures      sig.c~	 whoami.c
cp_new.c	       hello1.c		 play_again.c  sleep1.c  whoami.c~
cptemp		       linux-3.16.1	 psh1.c        sleep2.c  who.c
Desktop		       listchars.c	 Public        sleep3.c  whosrc.c
Documents	       logout_tty	 pwd.c	       sleep4.c
the current date/time is
2014年 09月 01日 星期一 22:34:39 CST
my name is
leichaojian
    其中,echo用来显示字符。

#!/bin/sh
#script2:a real program with variables, input and control flow

BOOK=$HOME/phonebook.data
echo find what name in phonebook
read NAME
if grep $NAME $BOOK > /tmp/pb.tmp
then
        echo Entries for $NAME
        cat /tmp/pb.tmp
else
        echo No entries for $NAME
fi
rm /tmp/pb.tmp
    程序输出:

leichaojian@ThinkPad-T430i:~$ chmod +x script2
leichaojian@ThinkPad-T430i:~$ ./script2
find what name in phonebook
dave
Entries for dave
dave 432-6546
leichaojian@ThinkPad-T430i:~$ ./script2
find what name in phonebook
fran
No entries for fran
leichaojian@ThinkPad-T430i:~$ cat $HOME/phonebook.data
ann 222-3456
bob 323-2222
carla 123-4567
dave 432-6546
eloise 567-9876
    这里fi代表if的结束。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《UNIX/Linux编程实践教程》是一本非常实用的编程教材,对于学习和掌握UNIX/Linux编程的人来说,是一本不可或缺的参考书。 本书主要介绍了UNIXLinux系统下的编程基础知识、常用库函数以及实际应用技巧。首先,书中详细阐述了UNIXLinux的基本概念、文件系统、进程管理、输入输出等基础知识,为读者打下坚实的理论基础。然后,通过大量实例和案例,详细介绍了C语言在UNIXLinux环境下的编程技巧和常用函数的使用方法,例如文件操作、进程管理、网络编程等。同时,还介绍了常用的开发工具和调试技巧,使读者能够更加高效地进行编程实践。 《UNIX/Linux编程实践教程》使用简明易懂的语言,结合大量案例和实例进行讲解,使读者能够更好地理解和掌握所学知识。此外,书中还配有丰富的习题和实践项目,帮助读者巩固所学内容,并实际应用所学知识进行项目开发。 通过学习《UNIX/Linux编程实践教程》,读者能够系统地学习UNIXLinux系统下的编程知识,掌握基本的开发技巧和调试方法,并能够灵活应用于实际项目开发中。无论是初学者还是有一定编程基础的人,都可以通过这本教程提升自己的编程水平,并在UNIXLinux环境下进行高效的开发工作。 总之,《UNIX/Linux编程实践教程》具有理论与实践相结合、内容丰富全面的特点,是一本实用性很强的编程教材,值得每个想要学习UNIXLinux编程的人去阅读和学习。 ### 回答2: UNIX/Linux编程实践教程是一本非常经典且实用的电子书,该书的pdf版本提供了更方便的阅读和学习方式。本书包含了丰富的实例和案例,旨在帮助读者理解UNIX/Linux系统的编程原理和实践技巧。 该书的内容主要包括以下方面:首先介绍了UNIX/Linux系统的基础知识,包括文件系统、进程管理、网络编程等。接着深入讲解了Shell编程和系统调用的使用方法和技巧,帮助读者快速掌握UNIX/Linux系统的编程技术。 此外,该书还介绍了常用的开发工具和环境,如GCC编译器、Make工具等,以及如何使用它们进行程序的编译和调试。同时,还讲解了常见的UNIX/Linux应用开发技术,如网络编程、多线程编程等,使读者能够更好地开发和优化自己的应用程序。 这本书的特点是实用性强,结合了丰富的实例和案例,让读者能够更好地理解和掌握UNIX/Linux编程技术。此外,该书还提供了逐步指导和实践练习,帮助读者逐步提升自己的编程能力。 总的来说,UNIX/Linux编程实践教程是一本非常优秀的电子书,适合想要学习和深入了解UNIX/Linux系统的开发人员和爱好者。无论是初学者还是有一定经验的开发人员,都可以从中受益匪浅。如果你正在学习UNIX/Linux编程,我强烈推荐你阅读这本书的pdf版本。 ### 回答3: 《UNIX/Linux编程实践教程》是一本经典的计算机编程教程,对于学习UNIX/Linux操作系统编程的人来说是一本非常有价值的参考书。这本书主要介绍了UNIX/Linux环境下的开发工具和编程技术,包括Shell脚本编程、C语言编程、系统编程等内容。 《UNIX/Linux编程实践教程》的特点之一是它的全面性和实用性。书中详细讲解了UNIX/Linux环境下各种常用的开发工具和命令,如gcc、make、grep、sed等,以及如何使用它们进行编程和调试。此外,书中还介绍了常用的编程技巧和方法,如文件操作、进程管理、内存管理等,让读者能够更好地理解和掌握UNIX/Linux系统编程的要点。 这本书的另一个亮点是它的实践性。《UNIX/Linux编程实践教程》中包含了大量实例和案例,通过这些实例,读者可以直接动手实践并应用所学的知识。这种实践性的教学方法可以帮助读者更好地理解和记忆所学的内容,并增强对UNIX/Linux编程的实际应用能力。 总的来说,《UNIX/Linux编程实践教程》是一本非常实用的编程教程,它以通俗易懂的语言讲解了UNIX/Linux系统编程的基本原理和实践技巧,具有很高的实用性和可操作性。对于想要学习UNIX/Linux系统编程的人来说,这本书是一个非常好的选择,可以帮助他们快速入门并提高编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值