b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

scalar() perl_stata scalar_perl substr(20)

电脑杂谈  发布时间:2017-01-23 23:04:07  来源:网络整理

参数的处理因参数的数目的不同而不同,就象在 exec 里描述的那样,包括判断是否调用 shell 以及你是否用声明另外一个 PATHNAME 的方法使用了该函数其他的名称。

因为 system 和反勾号阻塞 SIGINT 和 SIGQUIT,所以向那些正在这样运行的程序发送这些信号之一(比如通过一个 Control-C)时并不会中断你的主程序。但是你运行的另外一个程序的确收到这个信号。请检查 system 的返回值,判断你运行的程序是否正常退出。

   @args = ("command", "arg1", "arg2");
   system(@args) == 0
      or die "system @args failed: $?"

返回值是和该函数通过 wait(2) 系统调用返回的一样的退出状态。在传统的语意里,要获取实际的退出值,要除以 256 或者右移 8 位。这是因为低 8 位里有一些其他的东西。(实际上是其他的两些东西。)最低七位标识杀死该进程的信号号码(如果有的话),而第八位标识该进程是否倾倒了核心。你可以通过 $?($CHILD_ERROR)来检查所有失效可能性,包括信号和核心倾倒:

   $exit_value = $? >> 8;
   $exit_value = $? & 127;   # 或者 0x7f, 0177, 0b0111_1111
   $dumped_core = $? & 128;   #  或者 0x80, 0200, 0b1000_0000

如果该程序是通过系统 shell (注:定义为 /bin/sh 或者任何在你的平台上有意义的东西,但不是那些用户碰巧在某个时候用到的 shell。)运行的,这可能是因为你只有一个参数而且该参数里面有 shell 元字符,那么通常返回码受那个 shell 的怪癖和功能的影响。换句话说,在这种情况下,你可能无法获取我们前面描述了详细信息。

syswrite FILEHANDLE, SCALAR, LENGTH, OFFSET

syswrite FILEHANDLE, SCALAR, LENGTH

syswrite FILEHANDLE, SCALAR

这个函数试图用 write(2) 系统调用向你声明的 FILEHANDLE 里写入从变量 SCALAR 里获取的 LENGTH字节的数据。该函数返回实际写入的字节数,或者是出错时返回 undef。如果声明了 OFFSET,那么它指明从字串里的哪个位置开始写。(比如,你可能用一个字串做一个缓冲区,这时你就需要这个功能了,或者你需要从一个部分写中恢复过来。)负数 OFFSET 表示写应该从该字串的后面向前数这么多个字节。如果 SCALAR 是空的,那么唯一允许的 OFFSET 是 0。如果 LENGTH 为负数或者 OFFSET 指向了字串的外面,那么就会抛出一个例外。

要从文件句柄 FROM 中拷贝数据到文件句柄 TO,你可以用下面这样的东西:

   use Errno qw/EINTR/;
   $blksize = (stat FROM)[11] || 16384;      # 选定的块大小?
   while ($len = sysread FROM, $buf, $blksize) {
      if (!defined $len) {
         next if $! == EINTR;
         die "System read error: $!\n"
      }
      $offset = 0;
      while ($len) {            # 处理部分写问题
         $written = syswrite TO, $buf, $len, $offset;
         die "System write error: $!\n" unless defined $written;
         $offset   += $written;
         $len   -= $written;
      }
   }


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28372-20.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...