标签: proc

Linux - 查找进程是否已准备就绪或正在运行

我正在开发一个具有进程监视功能的C++应用程序,它根据这个模型监视状态变化:http://www.macdesign.net/capella/it4813/images/stallings-Linux_process-thread_states-f4.18.png

但是,由于/ proc/pid/status将"就绪"和"执行"状态组合成"运行"状态,我不知道如何找出进程实际处于哪些状态.任何人都可以提供有关我如何发现这一点的任何建议?

c++ linux process file-descriptor proc

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

保留时间值的动态PL/SQL日期参数

这可能是一个愚蠢的问题,但我找不到一个在动态调用的PL/SQL过程中传递"DATE"类型的解决方案.我需要的是在被调用的proc中传递日期和时间部分:

create or replace 
PROCEDURE DATE_TIME_TEST (  dte_Date_IN  IN DATE ) 
IS
    vch_SQL_Stmnt VARCHAR2(2000);
BEGIN
    DBMS_OUTPUT.PUT_LINE('Date is :'||TO_CHAR(dte_Date_IN, 'DD-Mon-YYYY HH24:MI:SS'));

END;
/

declare
    v_sql varchar2(2000);
begin
    v_sql := 'begin DATE_TIME_TEST( dte_Date_IN => '''|| 
              sysdate || ''''|| '); end;';
    execute immediate v_sql;
end; 
/
Run Code Online (Sandbox Code Playgroud)

这里的输出是 - 日期是:2013年8月27日00:00:00.

我希望它是 - 日期是:2013年8月27日13:01:09

oracle plsql dynamic proc

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

从/ proc / net / sockstat获取网络连接

我在显示套接字的/ proc中找到此信息:

$ cat /proc/net/sockstat 
sockets: used 8278
TCP: inuse 1090 orphan 2 tw 18 alloc 1380 mem 851
UDP: inuse 6574
RAW: inuse 1
FRAG: inuse 0 memory 0
Run Code Online (Sandbox Code Playgroud)

您能帮我找出这些值的含义吗?这些值是否足够可靠,还是我需要在其他地方搜索?

这些其他方法可以找到有关Linux中TCP / UDP连接的信息吗?

sockets linux networking proc

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

将方法从一个类复制到另一个类

我想用一些方法编写小类,它们实际上属于其他类,所以如何在其他类中定义现有副本的方法.我相信这是我不明白的元编程魔法师.

class Foo
  def initialize
    # with blocks, I would just pass block, but this is methods
    # so this won't work
    Bar.class_eval(perform)
    Bar.class_eval(process)
    Bar.class_eval(save)
  end

  def perform
    1+1
  end

  def process
    # some code
  end

  def save
    # some code
  end
end

class Bar; end

foo = Foo.new
foo.perform
#=> 2
Bar.test
#=> 1
Run Code Online (Sandbox Code Playgroud)

为什么我需要这个?我正在研究gem,它只需要三个方法.在初始化时(可能隐藏在父类中),它会将此方法传递给不同的类.我可以使用块来制作它,但是使用方法它会更清洁.

PS:这就像从一个类复制方法到另一个类

PSS:或者...如何将方法转换为proc,所以我可以将它传递给class_eval

ruby metaprogramming proc

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

初始化()中的Ruby proc与lambda

我今天早上发现proc.new在类初始化方法中工作,但不是lambda.具体来说,我的意思是:

class TestClass

  attr_reader :proc, :lambda

  def initialize
    @proc = Proc.new {puts "Hello from Proc"}
    @lambda = lambda {puts "Hello from lambda"}
  end

end

c = TestClass.new
c.proc.call
c.lambda.call
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,结果将是:

Hello from Proc
test.rb:14:in `<main>': undefined method `call' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

这是为什么?

谢谢!

ruby lambda proc

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

如何在1种方法中产生2个块

如何在同一方法中产生两个不同的块

示例代码:

def by_two(n,a)
    yield n
    yield a
end

proc1 = proc {|x| p x * 2}
proc2 = proc {|x| x + 100}

by_two(10, 300, &proc1, &proc2)
Run Code Online (Sandbox Code Playgroud)

错误是这样的 -

main.rb:7: syntax error, unexpected ',', expecting ')'
by_two(10, 300, &proc1, &proc2)
Run Code Online (Sandbox Code Playgroud)

有什么建议在哪里,哪些是错的?谢谢

ruby methods yield proc

4
推荐指数
2
解决办法
1006
查看次数

如何找到TCP套接字的索引节点?

如何将“ inode”列中的值绑定/proc/net/tcp到中的文件/proc/<pid>/fd/

我的印象是,inodeTCP 中的列具有套接字的inode的十进制表示形式,但事实并非如此。

例如,如果我运行,则会telnet localhost 80看到以下内容(telnet为pid 9021)。

/proc/net/tcp 包含

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
23: 0100007F:CE2A 0100007F:0050 01 00000000:00000000 00:00000000 00000000  1000        0 361556 1 00000000 20 0 0 10 -1
Run Code Online (Sandbox Code Playgroud)

这让我认为连接到127.0.0.1:80的套接字的inode是361556。但是如果我运行ls --inode -alh /proc/9021/fd,我会看到

349886 lrwx------ 1 me me 64 Dec 26 10:51 3 -> socket:[361556]
Run Code Online (Sandbox Code Playgroud)

索引节点为349886,与tcp表的索引节点列中的值不同:361556。但是链接目标似乎具有正确的名称。同样,stat /proc/9021/3显示:

File: ‘/proc/9021/fd/3’ -> ‘socket:[361556]’
Size: 64            Blocks: 0          IO Block: 1024 …
Run Code Online (Sandbox Code Playgroud)

sockets linux tcp proc

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

XV6:ptable初始化

我说的是:

struct {
struct spinlock lock;
struct proc proc[NPROC];
} ptable;
Run Code Online (Sandbox Code Playgroud)

它驻留在 proc.c 文件中。

有人可以解释它在哪里初始化吗?因为,在 proc.c 中,我从未见过向其中添加了某些东西(进程)。

更准确地说,假设我正在查看调度程序代码:

void
scheduler(void)
{
 struct proc *p;
 for(;;){
 // Enable interrupts on this processor.
 sti();
 // Loop over process table looking for process to run.
 acquire(&ptable.lock);
 for(p = ptable.proc; p < &ptable.proc[NPROC]; p++){
  if(p?>state != RUNNABLE)
  continue;
  // Switch to chosen process. It is the process’s job
  // to release ptable.lock and then reacquire it
  // before jumping back to us.
  proc = …
Run Code Online (Sandbox Code Playgroud)

c proc xv6

4
推荐指数
2
解决办法
5507
查看次数

/proc/thread-self 的目的?

我对 Linux 操作系统编程世界相当陌生。我正在开发一个控制 Intel CPU 的项目(涡轮增压、超线程、最小和最大缩放频率以解决其他用户的问题)。在调查/proc/statCPU 利用率时我偶然发现了这一点:

$ ll /proc/thread-self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/thread-self -> 9389/task/9389/

$ ll /proc/self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/self -> 29420/

$ ll /proc/self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/self -> 29636/

$ ll /proc/thread-self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/thread-self -> 30021/task/30021/
Run Code Online (Sandbox Code Playgroud)

thread-selfself每次列出带有 的符号链接时,它们都会不断变化ll。但日期和时间仍保留为上次启动时间。

我做了一些挖掘,在 2014 年发现了这个电子邮件链

该补丁集实现了/proc/thread-self一个神奇的符号链接,可以解决几个问题。

....电子邮件的下面写道: …

linux multithreading linux-kernel proc

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

Ruby:隐式块转换为 Proc

我的理解是,必须生成一个隐式附加到方法的块;它不能被调用。所以我试图理解为什么会这样:

def execute_code
  proc.call
end

execute_code { "Why does this work?" } # => "Why does this work?"
Run Code Online (Sandbox Code Playgroud)

将块附加到此代码会成功执行。

任何见解?我没有发现任何文档暗示隐式块会自动转换为 proc 对象并分配给变量proc

红宝石 2.5.3

ruby anonymous-function proc

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