读书时间 05/25/2011 Linux C/C++ 孤儿进程

14 篇文章 0 订阅

《Linux高级程序设计》2nd version,杨宗德


1. 杂问

 

2. 孤儿进程

[root@frank orphan]# cat orphan.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
        pid_t pid;
        if ((pid=fork())==-1) {
                perror("fork!");
        } else if (pid==0) {
                printf("pid=%d, ppid=%d/n", getpid(), getppid());
                sleep(2);
                printf("pid=%d, ppid=%d/n", getpid(), getppid());
        } else {
                exit(0);
        }
}
注:父进程先退出了,子进程被init进程(id=1)收养。

 

2. 僵尸进程

 

[root@frank zombe]# cat dead-p.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main() {
        pid_t pid;
        if ((pid=fork())==-1) {
                perror("fork!");
        } else if(pid==0) {
                system("ps");
                printf("Child pid = %d/n", getpid());
                exit(0);
        }

        sleep(3);
        system("ps");
        exit(0);
}

 

[root@frank zombe]# ./deadp
  PID TTY          TIME CMD
 5279 pts/1    00:00:00 bash
 5399 pts/1    00:00:00 deadp
 5400 pts/1    00:00:00 deadp
 5401 pts/1    00:00:00 ps
Child pid = 5400
  PID TTY          TIME CMD
 5279 pts/1    00:00:00 bash
 5399 pts/1    00:00:00 deadp
 5400 pts/1    00:00:00 deadp <defunct>
 5402 pts/1    00:00:00 ps

注:子进程先退出,但资源没有释放,成为僵尸(defunct)?

 

3. 组播

IP:230.1.1.1->MAC:01:00:53:1.1.1

                                   ^MAC组播头       

                                               ^ 后23bit从IP复制 

Q:局域网内所有主机网卡都会收到组播包,但网卡驱动程序如何确定是否传给IP层?是否网卡驱动有办法设置自己是否属于某个组播组?

 

4. chap 15 做一个xinetd服务

* 写服务代码

[root@frank xinetd]# cat daytime_inetd.c
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/param.h>
#include <sys/syslog.h>

#define MAXLINE 4096

int main(int argc, char **argv) {
        socklen_t len;
        struct socketaddr *cliaddr;
        char buff[MAXLINE];
        time_t ticks;

        ticks = time(NULL);
        snprintf(buff, sizeof(buff), "%.24s/r/n", ctime(&ticks));
        write(0, buff, strlen(buff));

        close(0);
        exit(0);
}

* 配置启动项

/etc/xinetd.d/daytime_inetd

 

root@frank xinetd]# cat /etc/xinetd.d/daytime_inetd
service daytime_inetd
{
        disable = no
        flags = REUSE
        sock_type = stream
        wait = no
        user = root
        server = /study/run/daytime_inetd
        log_on_failure += USERID
}

* 配置服务应用端口

/etc/services

 

[root@frank xinetd.d]# cat /etc/services | grep daytime_inetd
# my new service: daytime_inetd
daytime_inetd 8888/tcp
[root@frank xinetd.d]#

* 重启服务xinetd

# service xinetd restart

 

Q:不知为什么没有work !!!

 

5. laptop中配置samba,下载book程序源代码

Q:找不到Samba相关的命令

[root@localhost init.d]# /etc/init.d/smb restart
-bash: /etc/init.d/smb: 没有那个文件或目录

 

终于通过Linux图形界面中的ftp程序把source下载了!!! (22:00)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值