标签: proc

为什么我无法通过Android ICS中的FileReader正确读取/ proc/net/xt_qtaguid/stats

我想在Android ICS中读取/ proc/net/xt_qtaguid/stats,它记录所有接口和应用程序流量统计信息.以下是代码段:

String line = null;
BufferReader reader = new BufferedReader(new FileReader(new File("/proc/net/xt_qtaguid/stats")));

line = reader.readLine();/*Here I can read the 1st line correctly, it return "idx  iface acct_tag_hex..."*/
splitLine(line, keys);
line = reader.readLine();//!!!!!Read next line, it returns null!!!!!!
Run Code Online (Sandbox Code Playgroud)

如果我捕获此文件,它将显示:

idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets

2 rmnet0 0x0 0 0 6266 105 8882 121 1428 30 4838 75 0 0 208 4 2552 44 …

android filereader bufferedreader proc

2
推荐指数
1
解决办法
3364
查看次数

如何在tcl名称空间中定义proc

我在TCL中看到了一些这样的代码:

namespace eval ::info {
    set count 0;
    set id 1;
    set role admin;

    namespace export *
}



proc ::info::setcount {
    set ::info::count 0;
}

proc ::info::setId {
    set ::info::id 1;
}

proc ::info::setRole {
    set ::info::role user;
}
Run Code Online (Sandbox Code Playgroud)

在命名空间:: info中定义了三个变量,但是在命名空间中未声明三个procs(setcount setId setRole),好像它们是在:: info之外定义的,是否允许?这是如何运作的?

namespaces tcl proc

2
推荐指数
1
解决办法
4262
查看次数

如何将语句作为参数传递给方法中的块?

我正在尝试弄清楚如何将语句作为方法参数传递 - 用作块过滤条件的一部分.例如,我有以下代码:

def method
  other_method.persons.each do |ped|

    next if ped.first_name.nil? or ped.last_name.nil?

    puts ped.id
    puts ped.full_name
  end
end
Run Code Online (Sandbox Code Playgroud)

我希望能够做的如下(因此我可能会更改方法中使用的过滤条件).是否可以从参数中传递包含块引用的语句?:

def method(statement)
  other_method.persons.each do |ped|

    next if statement

    puts ped.id
    puts ped.full_name
  end
end
Run Code Online (Sandbox Code Playgroud)

我很欣赏这方面的一些方向.

ruby proc

2
推荐指数
1
解决办法
119
查看次数

如何将块/ proc和变量直接传递给函数?

我正在尝试学习块和触发器,我觉得这应该是可行的,但到目前为止我还没有成功.

我想要的是什么:

def main_action(generic_variable, block)
 generic_variable += 1 # I do more interesting stuff than this in my version
 yield(generic_variable)
end

main_action(3, {|num| num + 5 })
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

我找到的最接近的是http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html,似乎需要创建一个传递方法来发送块:

class Monkey

  # Monkey.tell_ape { "ook!" }
  # ape: ook!
  #  => nil
  def self.tell_ape(&block)
    tell("ape", &block)
  end

  def self.tell(name, &block)
    puts "#{name}: #{block.call}"
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我使用在我的代码中设置的相同传递方法,我可以使它工作,但它似乎是不必要的代码.我试着Monkey.tell("ape", { "ook!" })直接打电话,但得到了syntax error, unexpected '}', expecting tASSOC

是否有可能在一次调用中向一个函数发送一个变量和一个块(或proc,我不挑剔)?另外,如果你有时间,上面发生了什么?为什么不起作用?

ruby variables block proc

2
推荐指数
1
解决办法
1170
查看次数

如何在内核模块中创建 /proc 文件?

我想在内核模块中保存一些信息。我在stackoverflow中看到过类似的问题,但我的略有不同。假设我使用此代码写入 /proc 文件。我应该如何在我的内核模块之一中调用它?我有一个自定义内核模块被调用mymodule,它不是主文件(没有 init_module()),下面的函数被调用。在这种情况下,函数的输入值应该是什么file?基本上可以在内核模块中创建 /proc 文件吗?

int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data)

c filesystems file linux-kernel proc

2
推荐指数
1
解决办法
1814
查看次数

我可以在Ruby中的Proc中使用顶层中断来打破循环吗?

问题

  • 为什么breakproc中的三个循环一直跳到puts 8?这很反直觉.
  • 有没有办法让它突破最里面的循环,也就是说puts 6

3.times do
  puts "outer loop"
  break_proc = proc { break }

  puts 1
  loop do
    puts 2
    loop do
      puts 3
      loop do
        puts 4
        break_proc.call
        puts 5
      end
      puts 6
    end
    puts 7
  end
  puts 8
end
Run Code Online (Sandbox Code Playgroud)
outer loop
1
2
3
4
8
outer loop
1
2
3
4
8
outer loop
1
2
3
4
8
Run Code Online (Sandbox Code Playgroud)

ruby loops break proc

2
推荐指数
1
解决办法
262
查看次数

红宝石!方法或过程

我想要修改一个variable位置,复制methodname!语法而不是将新的修改值重新分配给它var.我可以这样做proc吗?我还在学习procs,看到它们非常有用,使用得当.

a = "Santol bag 85.88   www.example.com/products/16785
Shaddock    kg  2.94    www.example.com/products/4109
Palm Fig    5kg 94.34   www.example.com/products/23072
Litchee lb  95.85   www.example.com/products/2557"

a = a.split("\n")

linebreak = Proc.new { |text| text.split("\n") }
linebreak![a]
Run Code Online (Sandbox Code Playgroud)

第一次重新分配似乎很麻烦.proc版本我想看看我是否可以内联执行它.这可能吗?

ruby block proc

2
推荐指数
1
解决办法
61
查看次数

如何在Array中定义方法to_proc,以便我可以在特定情况下使用它

让我们说我有班级:

class Car
  attr_accessor :brand, :color
  def initialize(br, col)
    @brand = br
    @color = col 
  end
end

first_car = Car.new 'Mercedes', 'Yellow'
second_car = Car.new 'Jaguar', 'Orange'
third_car = Car.new 'Bentley', 'Pink'

array_of_cars = [first_car, second_car]
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是to_proc在类Array中定义一个方法,这样就可以实现:

array_of_cars.map(&[:brand, :color]) #=> [['Mercedes', 'Yellow'], ['Jaguar', 'Orange'], ['Bentley', 'Pink']]
Run Code Online (Sandbox Code Playgroud)

或者我怎么能以某种方式做这样的事情:

[:brand, :color].to_proc.call(first_car) #=> ['Mercedes', 'Yellow']
Run Code Online (Sandbox Code Playgroud)

ruby overriding proc

1
推荐指数
1
解决办法
114
查看次数

使用多个Proc对象的验证问题

我有验证Proc和问题

validates :subcategory, presence: true, 
if: Proc.new {|product| product.detail.blank?} && Proc.new { |product|  product.category.id != 16 }
Run Code Online (Sandbox Code Playgroud)

我的问题是当我true第二次进行验证时.

为什么会这样?如果它没有返回false,因为false && true=>false

ruby ruby-on-rails proc

1
推荐指数
1
解决办法
97
查看次数

proc 返回与 lambda 返回

为什么 ruby​​ 中的 Proc 在执行调用 Proc 的方法中的剩余代码之前返回?

def hello
  a = Proc.new{ return }
  a.call
  puts "Hello"
end


def proc
  hello
  puts "Proc"
end
Run Code Online (Sandbox Code Playgroud)

这里return将跳过puts "Hello"并仅打印puts "Proc"

lambda打印puts "Hello"也是如此。

这是什么原因呢?

ruby lambda proc

1
推荐指数
1
解决办法
1757
查看次数