2016-06-28 1 views
0

리눅스 커널 (4.5.5) 내에서 printk()mm/filemap.c에 추가했습니다.task_pid_nr (현재) ps의 출력에 나타나지 않는 pid를 반환

__generic_file_write_iter() 내부 I 추가 한 코드는 : io_tracing_on 참으로 평가되면 다음

if(io_tracing_on) { 
     ssize_t write_size = iov_length(from->iov, from->nr_segs); 
     printk(KERN_INFO "write size=%zu, pid=%d, inode=%lu\n", write_size, task_pid_nr(current), inode->i_ino); 
} 

, 난 (a different question 논의) 출력의 연속적인 스트림을 얻을 :

Jun 27 15:00:41 malka kernel: [ 463.424155] write size=168, pid=715, inode=7864653 
Jun 27 15:00:41 malka kernel: [ 463.428064] write size=168, pid=715, inode=7864354 

이 연속 된 출력 스트림 중에 pid (715)를 ps -ef의 출력으로 매핑하려고했으나 사용할 수 없습니다. pid가 프로세스 목록에 없습니다. task_pid_nr(current)이 어떤 프로세스를 말하는지 결정하는 방법이 있습니까?

+0

당신은 당신의 코드 몇 줄 중단 할 수 있습니다 -은'를 printk의 중요한 부분을()'행 전용 편집 모드에서 내 화면에 나타납니다 – tofro

+0

@tofro 흥미 롭습니다. 해당 코드 블록에 대한 가로 스크롤 막대도 표시되지 않습니까? – buratino

+1

'task_pid_vnr (current)'에 의해 리턴 된 가상 PID가'ps'의 출력에 나타 납니까? –

답변

1

커널의 pid는 조금 different meaning을 가지고, 당신은 사용자 공간 관점에서 PID에 맞게 tgid 사용해야

관련 문제