全面认识Perl进程处理函数

  • 本文和大家重点学习一下Perl进程处理函数的概念,这里主要包括Perl进程启动函数和Perl进程终止函数两部分内容,希望本文的介绍能让你有所收获。

    Perl进程处理函数

    1、Perl进程处理函数中Perl进程启动函数

    函数名eval

    调用语法eval(string)

    解说将string看作Perl语句执行。

    正确执行后,系统变量$@为空串,如果有错误,$@中为错误信息。

    例子$print="print(\"hello,world\\n\");";

    eval($print);

    结果输出hello,world

    函数名system

    调用语法system(list)

    解说list中第一个元素为程序名,其余为参数。

    system启动一个进程运行程序并等待其结束,程序结束后错误代码左移八位成为返回值。


    例子@proglist=("echo","hello,world!");

    system(@proglist);

    结果输出hello,world!

    函数名fork

    调用语法procid=fork();

    解说创建程序的两个拷贝--父进程和子进程--同时运行。子进程返回零,父进程返回非零
    值,此值为子程序的进程ID号。

    例子

        
        
    1. $retval=fork();  
    2.  
    3. if($retval==0){  
    4.  
    5. #thisisthechildprocess  
    6.  
    7. exit;#thisterminatesthechildprocess  
    8.  
    9. }else{  
    10.  
    11. #thisistheparentprocess  
    12.  
    13. }  
    14.  

    结果输出无

    函数名pipe

    调用语法pipe(infile,outfile);

    解说与fork合用,给父进程和子进程提供通信的方式。送到outfile文件变量的信息可以
    通过infile文件变量读取。步骤:

    1、调用pipe

    2、用fork将程序分成父进程和子进程

    3、一个进程关掉infile,另一个关掉outfile

    例子

        
        
    1. pipe(INPUT,OUTPUT);  
    2.  
    3. $retval=fork();  
    4.  
    5. if($retval!=0){  
    6.  
    7. #thisistheparentprocess  
    8.  
    9. close(INPUT);  
    10.  
    11. print("Enteralineofinput:\n");  
    12.  
    13. $line=<STDIN>;  
    14.  
    15. printOUTPUT($line);  
    16.  
    17. }else{  
    18.  
    19. #thisisthechildprocess  
    20.  
    21. close(OUTPUT);  
    22.  
    23. $line=<INPUT>;  
    24.  
    25. print($line);  
    26.  
    27. exit(0);  
    28.  
    29. }  
    30.  

    结果输出$

        
        
    1. program  
    2.  
    3. Enteralineofinput:  
    4.  
    5. Hereisatestline  
    6.  
    7. Hereisatestline  
    8.  
    9. $  
    10.  

    函数名exec

    调用语法exec(list);

    解说与system类似,区别是启动新进程前结束当前程序。常与fork合用,当fork分成两个
    进程后,子进程用exec启动另一个程序。

    例子

    结果输出

    函数名syscall

    调用语法syscall(list);

    解说调用系统函数,list第一个元素是系统调用名,其余为参数。

    如果参数是数字,就转化成C的整型数(typeint)。否则传递字符串的指针。详见UNIX的帮助Perl文档。

    使用syscall必须包含文件syscall.pl,即:

    require("syscall.ph");

    例子

    结果输出

    2、Perl进程处理函数中Perl进程终止函数

    函数名die

    调用语法die(message);

    解说终止程序并向STDERR输出错误信息。message可以为字符串或列表。如果最后一个参
    数不包含换行符,则程序文件名和行号也被输出。

    例子die("Cannotopeninputfile");

    结果输出Cannotopeninputfileatmyprogline6.

    函数名warn

    调用语法warn(message);

    解说与die类似,区别是不终止程序。

    例子warn("Danger!Danger!\n");

    结果输出Danger!Danger!


    函数名exit

    调用语法exit(retcode);

    解说终止程序并指定返回值。

    例子exit(2);

    结果输出无

    函数名kill

    调用语法kill(signal,proclist);

    解说给一组进程发送信号。

    signal是发送的数字信号,9为杀掉进程。

    proclist是进程ID列表。详见kill的UNIX帮助。

    例子

    结果输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值